转自百度知道非本人创作
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)。