Автоматически выровнять 104 подграфика в pgfplots

Автоматически выровнять 104 подграфика в pgfplots

Используя Matlab2tikzя сгенерировал файл, содержащий 104 подсюжета, выровненных очень определенным образом. Затем я вставил \pgfplotsset{yticklabel style={text width=2em,align=right},}, скомпилировал и получил окончательный PDF, который был хорош, за исключением того, что расположение подсюжетов все еще неудовлетворительно:

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

Я пытаюсь лучше организовать подсюжеты следующим образом:

  1. будет такой же вертикальный интервал,
  2. Только два ylabelsна подсюжет

Есть ли возможность сделать это, не изменяя каждый файл addplot?

Обновлять: Используя решение, предложенноеСтефан Пиннов, я заметил, что порядок все еще неправильный. Это потому, что сгенерированный файл *.tikz начинался со второго подграфика (слева) в нижнем ряду и позиционировал следующие подграфики относительно него. Это, конечно, сделало полученную фигуру с использованиемgroupplotсовершенно неправильно. Поэтому я считаю, что обязан придерживатьсяaxisокружающей среды, и играйте на , yticklabelsчтобы улучшить интервал.

Есть идеи, как автоматически исправить по три yticklabelsна подсюжет?

решение1

  1. Я думаю, что самый простой (последовательный) способ реализовать это — использовать библиотеку groupplots(посмотрите нараздел 5.8 руководства PGFPlots на стр. 428 и далее (в версии 1.13).
  2. Поскольку вы не указали точночто"two ylabels" вам нужны, я предлагаю немного поиграть с клавишами max space between ticksи try min ticks. Другие интересные клавиши могут быть ytick(в сочетании с ytick distance) или yticklabels from table. Все эти клавиши могут быть заданы как необязательные аргументы команды \nextgroupplotнапрямую или - в случае, если они должны повторяться - как стили, которые вы можете определить в преамбуле.

Ниже приведен действительно простой пример для groupplotокружающей среды.

\documentclass[border=2mm]{standalone}
\usepackage{pgfplots}
    \usepgfplotslibrary{groupplots}
\begin{document}
    \begin{tikzpicture}
        \begin{groupplot}[
            tiny,
            /tikz/mark size=1.5pt,
            group style={
                group name=my plots,
                group size=2 by 2,
                horizontal sep=4mm,      % <-- default: 1cm
                vertical sep=2mm,        % <-- default: 1cm
                xticklabels at=edge bottom,
            },
            width=3cm,
            height=3cm,
        ]
        \nextgroupplot[group/empty plot]
        \nextgroupplot
            \addplot coordinates{(0,0) (1,2) (2,1)};
        \nextgroupplot
            \addplot coordinates{(0,0) (1,2) (2,1)};
        \nextgroupplot
            \addplot coordinates{(0,0) (1,2) (2,1)};
        \end{groupplot}
    \end{tikzpicture}
\end{document}

изображение, показывающее результат кода выше

Связанный контент