matlab - 具有相同x轴的两个y轴

标签 matlab axis add

<分区>

Possible Duplicate:
Plotting 4 curves in a single plot, with 3 y-axes

假设我在 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 Axis 。现在我想要以下情节:

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

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

编辑:啊刚刚发现这个:Plotting 4 curves in a single plot, with 3 y-axes也许我可以自己解决...我现在就试试!

编辑:当使用对数 x Axis 时会怎样?!

最佳答案

请参阅 Using Multiple X- and Y-Axes 上的文档.像这样的东西应该可以解决问题:

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 Axis ,只需将 'XTickLabel',[] 添加到 axes 命令即可。

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

关于matlab - 具有相同x轴的两个y轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6573862/

相关文章:

c - 对于 21 世纪的专业数学研究人员来说,Matlab(相对于 C/FORTRAN)是一种受人尊敬的语言吗?

matlab - 如何修改 Matlab 对象的属性

web-services - ColdFusion 2016 中的 Web 服务不再起作用

python - 在 Python 中添加到一行的末尾

python - 使用 Keras 在 Python 中加载 .mat 数据

image - 检测灰度或二值图像中的六边形形状

date - Bokeh - 如何正确设置和控制 xaxis 的日期时间 - 可能的错误?

matplotlib - 如何设置x轴每10年一次

java - Java 队列中的 add 和 offer 方法有什么区别?

C# - 将列表框项目 move 到新的列表框