Matlab中的线性和非线性轴

时间:2015-04-20 08:30:27

标签: matlab plot matlab-figure multiple-axes

我是MatLab的新手,我需要一些帮助才能在一个图表中创建线性和非线性轴。 我需要用2个不同的X轴制作图表。一个X轴底部显示1000 / T,第二个X轴显示图表顶部的T.

示例图:

Example figure

您是否知道如何在MatLab中解决此问题? 感谢。

2 个答案:

答案 0 :(得分:1)

这可以通过在与第一个轴相同的位置创建第二个轴对象来完成。我们先创建一些数据:

x1 = 1:0.1:3.5;
x2 = 1./x1;
y = (0.5*(x1-2)).^3;

现在我们可以使用第一个轴创建法线图,并获得轴处理:

plot(x1,y,'-r');
ax(1) = gca;

然后我们创建第二个轴对象,在与第一个相同的位置,并使颜色none使其透明,下面的图仍然可见。由于这也添加了第二个Y轴,我们只需删除第二个轴的Y刻度。

ax(2) = axes('Position',ax(1).Position,'XAxisLocation','top','Color','none');
set(ax(2),'YTick',[]);

现在让我们根据需要格式化第二个X轴。让我们将限制设置为x2向量的最小值和最大值,并使其成为对数:

set(ax(2),'XLim',[min(x2),max(x2)]);
set(ax(2),'XScale','log');

现在我们仍然遇到问题,ax(1)的XTicks也显示在顶部,ax(2)的XTicks显示在底部。这可以通过移除现有轴周围的框并创建第三个轴而不带任何刻度而是带有框来解决。

box(ax(1),'off');
box(ax(2),'off');
ax(3) = axes('Position',ax(1).Position,'XTick',[],'YTick',[],'Box','on','Color','none');

现在我们终于可以链接轴以便能够正确缩放

linkaxes(ax);

那应该是它......

答案 1 :(得分:0)

Mathworks网站上有一个带有两个y轴图形的文档。 。

http://de.mathworks.com/help/matlab/creating_plots/plotting-with-two-y-axes.html

将概念转换为x轴应该是微不足道的。