用matlab将三条曲线放在一张双坐标的图上
x1=[0.4 0.5 0.59 0.6 0.7 0.8 0.9 0.99 1.11 1.12 1.31 1.4];
y1=[15.92 17.75 19.79 22.71 23.68 27.76 30.09 34.15 34.74 37.84 40 42.3];
a1=polyfit(x1,y1,1);
x11=[0:0.001;1.5];%x11=0:0.001;1.5错了??
y11=polyval(a1,x11);
x2=0.04:0.04:0.44;
y2=[4.95 13.66 21.87 25.68 30.52 33.58 37.19 40.43 42.91 49.30 50.12];
x22=[0;0.001;1.5];
a2=polyfit(x2,y2,1);
y22=polyval(a2,x22);
%x1-y1表示拟合前的点 x11-y11表示拟合后的直线 用左边和下方的坐标轴,
%x轴单位为F/N,y轴单位为V/ m/s
%x2-y2表示拟合前的点 x22-y22表示拟合后的直线 用左边和下方的坐标轴,
%x轴单位为F/N,y轴单位为V/ m/s
x3=[14421 13581 12742 11905 11047 10188 9340 9037 7632 6818 5986];
y3=[5.03 4.74 4.43 4.13 3.84 3.52 3.24 2.92 2.62 2.34 2.05];
x33=0:10:15000;
a3=polyfit(x3,y3,2);
y33=polyval(a3,x33);
%x3-y3表示拟合前的点 x33-y33表示拟合后的直线 用右边和上方的坐标轴,
%x轴单位为w/ 度/s,y轴单位为V / m/s
所以实际上,图上可以说是有六条线,但只需要三个图例来表示拟合直线(曲线),应该是用plotyy韩式表示吧??
顺便问一下,处理复杂的数据并制图用matlab好,还是excel,或者什么其他的软件,感觉matlab也是很麻烦的。。。
不止与100分 展开
plotyy函数只是有两个不同的纵轴,而横轴是一致的。
题主的要求是希望横轴、纵轴都不同,这应该没有现成的函数可用,只能是自己参照plotyy函数的思路来写代码。
由于不需要考虑两个坐标轴的范围及网格对齐问题,其实代码并不难写,比plotyy函数本身要简单很多。
基本思想是,用两个位置完全相同的坐标系叠加,其中第二个坐标系的颜色设为'none'(无填充色),并设置XAxisLocation、YAxisLocation分别为right和top。
参考代码(在题主贴出的代码之后):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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完成。总之,可以根据要解决的问题和自己的知识结构,选择适当的工具。
2024-11-14 广告
广告 您可能关注的内容 |