1

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

示例图:

示例图

你知道如何在 MatLab 中解决这个问题吗?谢谢。

4

2 回答 2

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);

而且应该是这样...

于 2015-04-20T10:47:52.833 回答
0

Mathworks 网站上有关于具有两个 y 轴的图形的文档。.

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

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

于 2015-04-20T08:58:44.117 回答