Старый ответ

Старый ответ

Я уже задавал похожий вопрос:Создать групповой участок 2x2 с +1 участком сбоку?

В то время использование среды subfigure не было проблемой. Но сейчас я не хочу использовать среду subfigure, поэтому ищу другое решение. Сюжет, который я хочу создать, такой:

|-----------------|
|        | Plot 4 |
| Plot 1 |--------| 
|        | Plot 5 |
|-----------------|
|        | Plot 6 |
| Plot 2 |--------| 
|        | Plot 7 |
|-----------------|
|        | Plot 8 |
| Plot 3 |--------| 
|        | Plot 9 |
|-----------------|

Графики 1,2,3 имеют одну и ту же ось x (и для интересующихся это график импульсной характеристики), как и графики 4,..,9 (которые являются диаграммами Боде, амплитуда + фаза).

Есть у кого-нибудь идеи? Я думаю, что groupplots следует расширить, добавив некоторые табличные возможности.

Если вы ищете минимальный пример, то у меня его нет, так как я не знаю, как это создать, но код решения моего предыдущего вопроса может помочь вам начать,https://tex.stackexchange.com/a/117685/15360

ps. кстати, решение не обязательно должно использовать среду groupplot. Основная причина, по которой я так часто использую groupplot, заключается в том, что я знаю, что выравнивание хорошее. Также, когда вы показываете метки x и y, а также отметки x и y. Так что это подло о том, что выравнивание правильное.

решение1

Вы можете использовать две groupplotsсреды, где высота осей во второй составляет половину высоты осей в первой. Чтобы выровнять их должным образом, я разместил первый подучасток второго группового участка относительно первого группового участка, с

\nextgroupplot[anchor=north west, at={($(left plots c1r1.north east) + (0.2cm,0)$)}]

left plotsэто метка для первого группового графика, добавленная с помощью

group style={
   group name=left plots,
   ..
   }

и left plots c1r1— это ось, которая находится в первом столбце и первой строке группы.

Я использовал ($(a) + (b)$)синтаксис из calcбиблиотеки, так как ([xshift=0.2cm]left plots c1r1.north east)он не сработал.

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

\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\usetikzlibrary{calc}
\begin{document}

\begin{tikzpicture}
\begin{groupplot}[
   group style={
      group name=left plots,
      group size=1 by 3,
      vertical sep=0pt,
      x descriptions at=edge bottom},
   width=4cm,
   height=4cm,
   scale only axis]
\nextgroupplot
 \addplot {x^2};
\nextgroupplot
 \addplot {x^2};
 \nextgroupplot
 \addplot {x^2};
\end{groupplot}

\begin{groupplot}[
    group style={
       group size=1 by 6,
       vertical sep=0pt,
       x descriptions at=edge bottom},
    width=4cm,
    height=2cm,
    scale only axis,
    ytick pos=right]
\nextgroupplot[anchor=north west, at={($(left plots c1r1.north east) + (0.2cm,0)$)}]
 \addplot {sqrt(x)};
\nextgroupplot
 \addplot {sqrt(x)};
 \nextgroupplot
 \addplot {sqrt(x)};
\nextgroupplot
 \addplot {sqrt(x)};
\nextgroupplot
 \addplot {sqrt(x)};
 \nextgroupplot
 \addplot {sqrt(x};
\end{groupplot}
\end{tikzpicture}

\end{document}

Старый ответ

Мне бы хотелось иметь groupplotsединственное решение, но обходной путь — использовать два объекта tikzpictures, каждый из которых имеет groupplotокружение, где высота осей во втором объекте составляет половину высоты осей в первом объекте.

\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\begin{document}

\begin{tikzpicture}
\begin{groupplot}[
   group style={
      group size=1 by 3,
      vertical sep=0pt,
      x descriptions at=edge bottom},
   width=4cm,
   height=4cm,
   scale only axis]
\nextgroupplot
 \addplot {x^2};
\nextgroupplot
 \addplot {x^2};
 \nextgroupplot
 \addplot {x^2};
\end{groupplot}
\end{tikzpicture}
%
\begin{tikzpicture}
\begin{groupplot}[
    group style={
       group size=1 by 6,
       vertical sep=0pt,
       x descriptions at=edge bottom},
    width=4cm,
    height=2cm,
    scale only axis,
    ytick pos=right]
\nextgroupplot
 \addplot {sqrt(x)};
\nextgroupplot
 \addplot {sqrt(x)};
 \nextgroupplot
 \addplot {sqrt(x)};
\nextgroupplot
 \addplot {sqrt(x)};
\nextgroupplot
 \addplot {sqrt(x)};
 \nextgroupplot
 \addplot {sqrt(x};
\end{groupplot}
\end{tikzpicture}

\end{document}

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

решение2

Это также можно сделать внутри одного группового лота 2x6, сгруппировав по 2 графика левого столбца:

\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}

\begin{document}

\begin{tikzpicture}
   \pgfplotsset{
      % override style for non-boxed plots
          % which is the case for both sub-plots
    every non boxed x axis/.style={},
    rightGraph/.style={ytick pos=right},
    leftUpperGraph/.style={ axis x line=top, ymin=10,ymax=20, xmin=-5,xmax=5, ytick={12,14,...,18}, %To remove one of the two 10 so it doesn't look bold.
  },
    leftLowerGraph/.style={ axis x line=bottom, ymin=0,ymax=10, xmin=-5,xmax=5,}, 
  }
  \begin{groupplot}[
      group style={
        group size=2 by 6,
        vertical sep=0pt,
        horizontal sep=2mm,
      x descriptions at=edge bottom},
      width=4cm,
      height=2cm,
    scale only axis]
    \nextgroupplot[%
      leftUpperGraph,
    ]
    \addplot {x^2};
    \nextgroupplot[%
      rightGraph,
    ]
    \addplot {sqrt(x)};
    \nextgroupplot[%
      leftLowerGraph,
    ]
    \addplot {x^2};
    \nextgroupplot[%
      rightGraph,
    ]
    \addplot {sqrt(x)};
    \nextgroupplot[%
      leftUpperGraph,
    ]
    \addplot {x^2};
    \nextgroupplot[%
      rightGraph,
    ]
    \addplot {sqrt(x)};
    \nextgroupplot[%
      leftLowerGraph,
    ]
    \addplot {x^2};
    \nextgroupplot[%
      rightGraph,
    ]
    \addplot {sqrt(x)};
    \nextgroupplot[%
      leftUpperGraph,
    ]
    \addplot {x^2};
    \nextgroupplot[%
      rightGraph,
    ]
    \addplot {sqrt(x)};
    \nextgroupplot[%
      leftLowerGraph,
    ]
    \addplot {x^2};
    \nextgroupplot[%
      rightGraph,
    ]
    \addplot {sqrt(x)};
     \end{groupplot}
\end{tikzpicture}

\end{document}

Я уже несколько месяцев не писал никаких групповых графиков (кроме этого^^), поэтому у меня есть бонусный вопрос: как мне определить стиль для группового графика? \tikzstyleНе работает… Это сделало бы мой код немного короче :)

Редактировать:

Ответ был дан Торбьёрном Т., поэтому я обновил свой ответ соответствующим образом, введя стили.

Предлагаемое решение

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