【问题标题】:Plotting using subplot with different x-axis for each plot使用具有不同 x 轴的子图绘制每个图
【发布时间】:2016-05-26 16:07:35
【问题描述】:

我正在尝试使用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

【问题讨论】:

标签: matlab plot matlab-figure figure subplot


【解决方案1】:

您可以使用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])

等等

示例输出:

【讨论】:

  • 虽然它可能不会在性能方面产生任何可衡量的差异,但如果您明确传递 'Position' 值,那么实际上甚至不需要使用 subplot 而不是 @987654331 @.
【解决方案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]);

它会给出这个输出:

【讨论】:

    猜你喜欢
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 2019-01-06
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    相关资源
    最近更新 更多