можно ли изменить высоту участка?

Всего у меня 4 подзаголовка. 1-й и 3-й — это фактические сигналы, а 2-й и 4-й — их соответствующие тактовые сигналы, т. Е. Они равны 0 или 1. Проблема с подграфиками заключается в том, что все графики имеют одинаковую высоту. Но я хочу, чтобы высота тактовых сигналов была небольшой по сравнению с фактическими сигналами. и соответствующие тактовые сигналы должны быть чуть ниже их фактических сигналов. Я бы резюмировал свои требования:

  1. Уменьшение высоты подграфика тактовых сигналов (т.е. 2-го и 4-го подграфиков).
  2. Уменьшение разрыва между первыми двумя сюжетными линиями и двумя последними сюжетными линиями.

Любой, кто мог бы помочь мне с этим? Заранее спасибо.


person Aakash Sehgal    schedule 13.11.2015    source источник
comment
Чтобы контролировать поля и промежутки между подграфиками, взгляните на функцию tight_subplot при обмене файлами Mathworks. Я использую его почти исключительно даже для одноосных графиков, чтобы избавиться от раздражающих пробелов вокруг осей.   -  person mikkola    schedule 13.11.2015
comment
Я пробовал это, но не помогает... это дает ошибку Неопределенная функция "tight_subplot" для входных аргументов типа "двойной". Не могли бы вы поподробнее рассказать о решении... @mikkola   -  person Aakash Sehgal    schedule 13.11.2015


Ответы (2)


Вы должны немного поиграть с gca и его «свойствами». Очень простой пример:

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

введите здесь описание изображения

person NKN    schedule 13.11.2015
comment
Привет. Код работает нормально, но если я добавлю больше подграфиков, а затем увеличу размер первого графика, он не уместится на полях. Есть ли способ увеличить верхнее поле фигуры Matlab? @НКН - person Aakash Sehgal; 13.11.2015

Вы можете настроить размер, изменив способ индексации подграфиков. Если вы используете 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

Выход:

введите здесь описание изображения

При необходимости вы можете проявить гораздо больше творчества, но это должно вам помочь.

person zelanix    schedule 13.11.2015
comment
Вы мастер. Это именно то, что я искал (метод rowspan для изменения относительных пропорций). - person techdude; 30.11.2017