當前位置:編程學習大全網 - 編程語言 - 用matlab將三條曲線放在壹張雙坐標的圖上

用matlab將三條曲線放在壹張雙坐標的圖上

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完成。總之,可以根據要解決的問題和自己的知識結構,選擇適當的工具。

  • 上一篇:宜春邊成茂教育
  • 下一篇:想報通信工程專業,國內哪些大學比較好?
  • copyright 2024編程學習大全網