使用具有不同x轴的子图绘制每个图

时间:2016-05-26 16:07:36

标签: matlab plot matlab-figure figure subplot

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

这是一个带有空图的示例,仅用于显示我希望我的图形看起来如何。

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

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

enter image description here

2 个答案:

答案 0 :(得分:5)

您可以使用Position的{​​{1}}属性(此处为每个子图)并根据需要自定义它们,使用命名法

axes

其中:

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

示例输出:

enter image description here

答案 1 :(得分:4)

您可以在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]);

它会给出这个输出:enter image description here