用matlab将三条曲线放在一张双坐标的图上

来源:互联网 发布:centos安装pdo 编辑:程序博客网 时间:2024/06/06 12:42

转自百度知道非本人创作
http://zhidao.baidu.com/link?url=azQKNe1oro9G6TTVTfQNlJjAGc7RN2_YtbyRwl-dX_MqPkS43JN_ugb90vYJPh8NwdtsjpiJmgxboVLk8x5IPLUVhJVdwLBFs27bIvvU4Ti

plotyy函数只是有两个不同的纵轴,而横轴是一致的。
题主的要求是希望横轴、纵轴都不同,这应该没有现成的函数可用,只能是自己参照plotyy函数的思路来写代码。
由于不需要考虑两个坐标轴的范围及网格对齐问题,其实代码并不难写,比plotyy函数本身要简单很多。
基本思想是,用两个位置完全相同的坐标系叠加,其中第二个坐标系的颜色设为’none’(无填充色),并设置XAxisLocation、YAxisLocation分别为right和top。

参考代码(在题主贴出的代码之后):

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)。
这里写图片描述

0 0
原创粉丝点击