您的位置:首页 > 编程语言 > MATLAB

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

2016-06-07 17:10 471 查看
转自百度知道非本人创作

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 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)。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: