两个y轴具有相同的x轴

tim*_*tim 7 matlab axis add

可能重复:
在单个图中绘制4条曲线,具有3个y轴

假设我在Matlab中有以下数据集作为示例:

x = linspace(0, 9, 10);
y1=arrayfun(@(x) x^2,x);
y2=arrayfun(@(x) 2*x^2,x);
y3=arrayfun(@(x) x^4,x);
Run Code Online (Sandbox Code Playgroud)

因此你可以看到他们有相同的x轴.现在我想要以下情节:

一个x轴,限制为0到9(这些限制也应该是刻度),带有N个刻度(我希望能够自己定义N),因此在中间有N-2个刻度,因为0和9本身已经是刻度.我希望y1和y2引用相同的y轴,左边显示的是0和最大值([y1,y2]),并且中间有M个刻度.比我想在右边有另一个轴,其中y3指的是......

y1,y2和y3应该在同一个图例框中有条目...感谢到目前为止!

编辑:argh刚发现这个:在一个情节中绘制4条曲线,有3个y轴,也许我可以把它自己搞定......我现在就试试吧!

编辑:什么时候使用对数x轴?!

Mat*_* B. 12

请参阅有关使用多个X轴和Y轴的文档.像这样的东西应该做的伎俩:

figure
ax1 = gca;
hold on
plot(x,y1)
plot(x,y2)
ax2 = axes('Position',get(ax1,'Position'),...
       'XAxisLocation','top',...
       'YAxisLocation','right',...
       'Color','none',...
       'XColor','k','YColor','k');
linkaxes([ax1 ax2],'x');
hold on
plot(x,y3,'Parent',ax2);
Run Code Online (Sandbox Code Playgroud)

编辑:哎呀,错过了一个hold命令.应该现在就行.此外,要删除顶部的第二个x轴,只需添加'XTickLabel',[]axes命令.

顺便说一句,你真的不应该使用arrayfuny1=arrayfun(@(x) x^2,x);.相反,使用.^运算符:y1=x.^2;.它的风格更好,速度更快.