关于matlab中plotyy命令的疑问(采用数组化编程和for循环的差别)
plotyy接受的参数,x和y1,y2是数组
函数会自动将数组中相邻的数据有线连起来形成曲线
每次的x和y1,y2数据只是一个点的画
循环运行plotyy,会每次画一个图,而每个图只有一点
就会出现你运行的情况,下面很多个图的很坐标都叠到一起,什么都看不清
而点也分开,不会连成曲线
如果要用for循环你也只能用for循环生成数组,再一次画出来
for i=0:0.1:20
x(i)=i;
y1(i)=200*exp(-0.05*x(i))*sin(x(i))
y2(i) = 0.8*exp(-0.5*x(i))*sin(10*x(i))
end
plotyy(x,y1,x,y2);
但运行效率也不及数组化高
如何利用matlab的plotyy函数画双坐标图??
�0�2�0�2具有两个纵坐标标度的图形 在MATLAB中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy绘图函数。调用格式为: plotyy(x1,y1,x2,y2) 其中x1,y1对应一条曲线,x2,y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1,y1数据对,右纵坐标用于x2,y2数据对。 双y轴坐标可以用plotyy(x,y1,x,y2)来实现 双x坐标可以用 set(gca,'xaxislocation','bottom','xticklabel',{'0','1','2','3','4'}) (假设x轴的标注为1,2,3,4) set(gca,'xaxislocation','top','xticklabel',{'0','1','2','3','4'}) 进行相应的设置 【 * 例 10.7.3 -1 】制作一个双坐标系用来表现高压和低温两个不同量的过渡过程。 set(get(h_ap,'Ylabel'),'String',' 压力 /rightarrow(/times10 ^{5}Pa )')h_at=axes('Position',get(h_ap,'Position'));%<12set(h_at,'Color','none','Xcolor','r','Ycolor','r');%<13set(h_at,'Xaxislocation','top')%<14set(h_at,'Yaxislocation','right','Ydir','rev')%<15set(get(h_at,'Xlabel'),'String','/fontsize{15}/fontname{ 隶书 } 时间
用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 onh2=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 plotax(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完成。总之,可以根据要解决的问题和自己的知识结构,选择适当的工具。
Matlab中用plot画图,x轴和y轴比例不一致
figure axe1 = axes('position', [.13, .13, .74, .23]); axe2 = axes('position', [.13, .40, .74, .50]); set(gcf, 'position', [532 197 951 781]),首先,position的值是[左,底,宽, 高] ,这个一看就明白了,四点确定了一个图形的所有,但是这里一定要注意,gcf和axe的不同, axe的母句柄是figre,所以,axe的数字都是小于1的,这个数字的意义是在figure里面的比例,整个figure是1。但是,对于figure而言,不是这样的,因为经常会在x轴有日期啊各种,所以figure的大小很重要,这里的figure大小就是真实的大小,和屏幕分辨率有关,分辨率是多少,最大就是多少。具体操作如下: 1、打开软件 2、输入plot(x,y,x,g,) 3、输入legend(“sin(x)”,“cox(x)”) 4、得出