为每个图使用具有不同 x 轴的子图进行绘图

Plotting using subplot with different x-axis for each plot

我正在尝试使用 subplot 绘制包含三个图的图形。所有三个图的 y 轴从 -11 都是相同的,而 x 轴分别是 2.5510。对于所有三个图,x 轴的问题看起来都相似。我尝试使用 axis square 但它将地块更改为正方形。我希望第一个图从左侧开始并在一个点结束,而第二个图从左侧开始并在它是第一个图的 x 轴双倍距离的点结束。第三个绘图必须从左侧开始,并在 x 轴与第一个绘图的 x 轴的三倍处结束。有什么办法吗?

这是一个带有空图的示例,只是为了展示我希望我的图形看起来像什么。

我使用了下面的代码,但不幸的是它不能正常工作

figure
subplot (3,1,1);
xlabel('x cm')                                              
ylabel('y cm')                                          
grid on
set(gca, 'XTick', 0:0.5:2.5)
set(gca, 'YTick', -1:1:1)
xlim([0 2.5]);
ylim([-1 1]);
% axis square
subplot (3,1,2);
xlabel('x cm')                                              
ylabel('y cm')                                          
grid on
set(gca, 'XTick', 0:1:5)
set(gca, 'YTick', -1:1:1)
xlim([0 5]);
ylim([-1 1]);
% axis square
subplot (3,1,3);
xlabel('x cm')                                              
ylabel('y cm')                                          
grid on
set(gca, 'XTick', 0:2:10)
set(gca, 'YTick', -1:1:1)
xlim([0 10]);
ylim([-1 1]);
% axis square

您可以使用 axesPosition 属性(这里是您的每个子图)并根据需要使用命名法自定义它们

[l b w h]

其中:

l: 左边 b: 底部
w:宽度 h: 高度

例如为每个子图分配一个句柄:

h(1) = subplot(3,1,1)
h(2) = subplot(3,1,2)
h(3) = subplot(3,1,3)

并改变他们的位置(这里以标准化单位表示):

set(h(1),'Position',[.1 .75 .2 .2])
set(h(2),'Position',[.1 .45 .5 .2])
set(h(3),'Position',[.1 .15 .8 .2])

您也可以按如下方式一次性完成:

h(1) = subplot(3,1,1,'Position',[.1 .75 .2 .2])

等等

示例输出:

您可以在 subplot 命令中稍作修改后使用相同的代码。尝试以下操作:

figure
subplot (3,3,1);
xlabel('x cm')                                              
ylabel('y cm')                                          
grid on
set(gca, 'XTick', 0:0.5:2.5)
set(gca, 'YTick', -1:1:1)
xlim([0 2.5]);
ylim([-1 1]);

subplot (3,3,4:5);
xlabel('x cm')                                              
ylabel('y cm')                                          
grid on
set(gca, 'XTick', 0:1:5)
set(gca, 'YTick', -1:1:1)
xlim([0 5]);
ylim([-1 1]);

subplot (3,3,7:9);
xlabel('x cm')                                              
ylabel('y cm')                                          
grid on
set(gca, 'XTick', 0:2:10)
set(gca, 'YTick', -1:1:1)
xlim([0 10]);
ylim([-1 1]);

它会给出这个输出: