Группировка меток оси Y в Matlab - PullRequest
2 голосов
/ 21 апреля 2020

Я создаю внешний сюжет 3x1 в Matlab. Внутри каждого внешнего графика я хочу иметь внутренний график 5х1. Для каждого внешнего графика 3x1 мне нужны отдельные метки оси Y. Я также хочу, чтобы каждый внутренний график 5x1 имел собственную метку оси Y. Все графики будут иметь одинаковую метку оси X.

Я использовал функцию Matlab tiledlayout. Я борюсь с тем, как создать вложенные внутренние графики 5x1 и как дать каждому внутреннему графику свою собственную метку. Это то, что я имею до сих пор:

close all
f = figure;
subj_plot = tiledlayout(3,1);


% Iterate through all subject

for subj = 1:3
    nexttile
    ylabel(['\bf Subject', num2str(subj)]);
    for fing = 1:5

    end

end
xlabel('test');
subj_plot.TileSpacing = 'compact';

В целом эта цифра будет 15x1 с группировкой 3x1. Я не уверен, как это настроить и как вложить фигуру в виде мозаики в фигуру с различными надписями, используя удержание. I Как я могу это сделать?

РЕДАКТИРОВАТЬ: каждый отдельный график 15x1 будет иметь два наложенных друг на друга графика.

РЕДАКТИРОВАНИЕ2: DESIRED STRUCTURE WITH DIMENSIONS REDUCED

1 Ответ

0 голосов
/ 21 апреля 2020

У меня нет функции tiledlayout (мой Matlab старше R2019b), поэтому я не могу воспроизвести это точно. Я бы рассмотрел возможность использования text вместо ylabel для внешних графиков, что-то вроде этого:

% define ax = get axis for each subplots in your tiled layout
ax.Units = 'pixels'; 
h = text(ax.Position(1)+ax.Position(3)/2, ax.Position(2)+ax.Position(4)/2, 'Your Outer Axis Label', 'Units', 'pixels', 'HorizontalAlignment', 'center', 'Rotation', 90);

Вы, конечно, тоже можете перетащить текст вручную, если воспроизводимость здесь не имеет значения.

...