是否可以改变子图的高度?

时间:2015-11-13 10:06:05

标签: matlab plot subplot

我总共有4个子图。第1和第3是实际信号,第2和第4是它们各自的时钟信号,即它们是0或1.子图的问题是所有图都具有相同的高度。但我希望时钟信号的高度与实际信号相比较小。各个时钟信号应该低于它们的实际信号。我会总结一下我的要求:

  1. 降低时钟信号子图的高度(即第2和第4子图)。
  2. 缩小前两个子图和最后两个子图之间的差距。
  3. 有谁可以帮我解决这个问题? 提前谢谢。

2 个答案:

答案 0 :(得分:2)

您可以通过更改索引子图的方式来调整大小。如果您使用subplot(4, 1, 1)subplot(4, 1, 2)等,那么它们都将具有相同的高度。但是,如果您使用subplot(6, 1, 1:2)subplot(6, 1, 3)等,则第一个子图的高度将是第二个子图的两倍。

要调整绘图之间的位置,您可以按如下方式调整轴的position属性:

figure
t = 1:0.1:10;

for i = 1:4
    switch i
        case 1
            subplot(6, 1, 1:2)
        case 2
            subplot(6, 1, 3)
        case 3
            subplot(6, 1, 4:5)
        case 4
            subplot(6, 1, 6)
    end

    plot(t, sin(i * t));

    if i == 1 || i == 3
        set(gca, 'xtick', []);

        p = get(gca, 'Position');
        % Increase the height of the first and third subplots by 10%
        p_diff = p(4) * 0.1;
        % Increase the height of the subplot, but this will keep the
        % bottom in the same place
        p(4) = p(4) + p_diff;
        % So also move the subplot down to decrease the gap to the next
        % one.
        p(2) = p(2) - p_diff;
        set(gca, 'Position', p);
    end
end

输出:

enter image description here

根据需要,您可以使用此功能获得更多创意,但这应该可以帮助您入门。

答案 1 :(得分:2)

您应该使用clc, clear, close all x = -2*pi:0.01:2*pi; y=sin(x); subplot(2,1,1);plot(x,y); % plot the first subplot subplot(2,1,2);plot(x,y,'r'); % plot the second one A = get(gca,'position'); % gca points at the second one A(1,4) = A(1,4) / 2; % reduce the height by half A(1,2) = A(1,2) + A(1,4); % change the vertical position set(gca,'position',A); % set the values you just changed 及其'属性'进行一些操作。一个非常简单的例子是:

{{1}}

enter image description here