Matlab 具有相同x轴的两个y轴

Matlab 具有相同x轴的两个y轴,matlab,axis,add,Matlab,Axis,Add,可能重复: 假设我在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); 因此,您可以看到它们具有相同的x轴。现在我想要下面的图: 一个限制为0到9的x轴(这些限制也应该是刻度)有N个刻度(我希望自己能够定义N个刻度),所以中间有N-2个刻度,因为0和9本身已经是刻度。我希望y1和y2指向同一个y轴,该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);
因此,您可以看到它们具有相同的x轴。现在我想要下面的图:

一个限制为0到9的x轴(这些限制也应该是刻度)有N个刻度(我希望自己能够定义N个刻度),所以中间有N-2个刻度,因为0和9本身已经是刻度。我希望y1和y2指向同一个y轴,该y轴显示在左侧,其中0和max([y1,y2])有刻度,中间还有M个刻度。 我想在右边有另一个轴,y3指的是

y1、y2和y3应在同一图例框中有条目。。。 谢谢你

编辑:啊,刚刚发现了这个:也许我可以自己把它包起来。。。我现在就去试试

编辑:使用对数x轴时会发生什么

请参阅上的此文档。像这样的事情应该可以做到:

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);
编辑:哎呀,错过了等待命令。现在应该可以工作了。此外,要删除顶部的第二个x轴,只需将
'XTickLabel',[]
添加到
命令中即可


另外,你真的不应该对
y1=arrayfun(@(x)x^2,x)使用
arrayfun
。相反,请使用
^
运算符:
y1=x.^2。它的样式更好,速度更快。

出于您的目的,应该足够了。谢谢,我是这样做的:我宁愿使用plotyy,但我不知道如何在同一个轴上绘制x vs y1和y2,在另一个轴上只绘制x vs y3!?因为plotyy只接受参数(x,y1,x,y2)仅供参考:它不是重复的。这对我不适用。只有当我删除最后一个plot命令时,我才能看到第二个轴(但在顶部有第二个x轴)。当使用第三个plot命令时,y轴会额外显示在左侧。教我如何发布未测试的代码。我错过了第二个轴上的
保持
。我现在已经测试过了,它对我很有用。@Matt B:我会用较低级别的
行替换所有
绘图
s(这样你就不需要
按住
命令),给它们不同的颜色,将它们的句柄保存在一个向量中,并添加一个图例:
图例(hline,'y1','y2','y3')