plotyy函數只是有兩個不同的縱軸,而橫軸是壹致的。
題主的要求是希望橫軸、縱軸都不同,這應該沒有現成的函數可用,只能是自己參照plotyy函數的思路來寫代碼。
由於不需要考慮兩個坐標軸的範圍及網格對齊問題,其實代碼並不難寫,比plotyy函數本身要簡單很多。
基本思想是,用兩個位置完全相同的坐標系疊加,其中第二個坐標系的顏色設為'none'(無填充色),並設置XAxisLocation、YAxisLocation分別為right和top。
參考代碼(在題主貼出的代碼之後):
co?=?get(gcf,'defaultaxescolororder');ax(1)?=?newplot;
set(gcf,'nextplot','add')
h1=plot(x1,y1,'o',x11,y11,'-','color',co(1,:));
hold?on
h2=plot(x2,y2,'x',x22,y22,':','color',co(1,:));
set(ax(1),'box','off')
set(ax(1),'xcolor',co(1,:),'ycolor',co(1,:))
xlabel('F/N')
ylabel('V/?m/s')
%?Plot?second?plot
ax(2)?=?axes('position',get(ax(1),'position'));
h3=plot(x3,y3,'s',x33,y33,'color',co(2,:))
set(ax(2),'XAxisLocation','top','YAxisLocation','right',?...
'xgrid','on','ygrid','on','box','off','color','none');set(ax(2),'xcolor',co(2,:),'ycolor',co(2,:))
xlabel('w/?度/s')
ylabel('V?/?m/s')
legend([h1(2)?h2(2)?h3(2)],'x11-y11','x22-y22','x33-y33',2)
需要註意的是,由於需要把曲線的顏色設為和坐標軸顏色壹致(以區分哪條曲線和哪個坐標系對應),曲線的區分可以使用線型(LineStyle)、標記(Marker)和線寬(LineWidth),但不宜使用不同顏色(Color)。
最後,關於處理復雜的數據並制圖用matlab好,還是excel好的問題,其實是見仁見智的。每個軟件都會有自己的優勢,關鍵看使用者的熟悉程度和偏好。就我個人的體會來說,MATLAB總體上更強大,數據處理和繪圖可以通過編程實現,相對而言自動化程度更高壹些,但要想深入掌握也是需要花費不少時間的;Excel界面更友好,交互性更強,對於繪制的圖形可以通過交互的方式做各種修飾,而如果希望實現自動化,也在壹定程度上可以利用VBA完成。總之,可以根據要解決的問題和自己的知識結構,選擇適當的工具。