Matlab 中的线性轴和非线性轴
Linear and Non-linear axis in Matlab
我是 MatLab 新手,我需要一些帮助才能在一个图表中创建线性和非线性轴。
我需要用 2 个不同的 X 轴制作图表。一个 X 轴在底部显示 1000/T,第二个 X 轴在图表顶部显示 T。
例图:
你知道如何在 MatLab 中解决这个问题吗?
谢谢
在 Mathworks 网站上有关于具有两个 y 轴的图形的文档。 .
http://de.mathworks.com/help/matlab/creating_plots/plotting-with-two-y-axes.html
将概念隐藏到 x 轴应该是微不足道的。
这可以通过简单地在与第一个相同的位置创建第二个轴对象来完成。让我们先创建一些数据:
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');
现在我们终于可以 link 轴能够正确缩放
linkaxes(ax);
应该就是这样了...
我是 MatLab 新手,我需要一些帮助才能在一个图表中创建线性和非线性轴。 我需要用 2 个不同的 X 轴制作图表。一个 X 轴在底部显示 1000/T,第二个 X 轴在图表顶部显示 T。
例图:
你知道如何在 MatLab 中解决这个问题吗? 谢谢
在 Mathworks 网站上有关于具有两个 y 轴的图形的文档。 .
http://de.mathworks.com/help/matlab/creating_plots/plotting-with-two-y-axes.html
将概念隐藏到 x 轴应该是微不足道的。
这可以通过简单地在与第一个相同的位置创建第二个轴对象来完成。让我们先创建一些数据:
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');
现在我们终于可以 link 轴能够正确缩放
linkaxes(ax);
应该就是这样了...