
Eu fiz uma pergunta semelhante antes:Criar um gráfico de grupo 2x2 com gráfico +1 ao lado?
Naquela época, usar o ambiente de subfiguras não era um problema. Mas não quero usar o ambiente de subfiguras agora, então estou procurando uma solução diferente. O enredo que quero criar é:
|-----------------|
| | Plot 4 |
| Plot 1 |--------|
| | Plot 5 |
|-----------------|
| | Plot 6 |
| Plot 2 |--------|
| | Plot 7 |
|-----------------|
| | Plot 8 |
| Plot 3 |--------|
| | Plot 9 |
|-----------------|
O gráfico 1,2,3 tem nomeadamente o mesmo eixo x (e para os interessados é um gráfico de resposta ao impulso), bem como os gráficos 4,..,9 (que são gráficos de bode, magnitude + fase).
Alguém tem alguma ideia? Acho que os gráficos de grupo devem ser estendidos para terem alguns recursos tabulares.
Se você está procurando um exemplo mínimo, não tenho um, pois não sei como criá-lo, mas o código da solução da minha pergunta anterior pode ajudá-lo a começar,https://tex.stackexchange.com/a/117685/15360
obs. aliás, a solução não precisa necessariamente usar o ambiente groupplot. A principal razão pela qual uso o groupplot com muita frequência é porque sei que o alinhamento está bom. Além disso, quando você mostra os rótulos x e y, bem como os ticks de x e y. Portanto, é importante que o alinhamento esteja correto.
Responder1
Você poderia usar dois groupplots
ambientes, onde a altura dos eixos no segundo é a metade da do primeiro. Para alinhá-los corretamente, coloquei o primeiro subparcela do segundo groupplot em relação ao primeiro groupplot, com
\nextgroupplot[anchor=north west, at={($(left plots c1r1.north east) + (0.2cm,0)$)}]
left plots
é um rótulo para o primeiro groupplot, adicionado com
group style={
group name=left plots,
..
}
e left plots c1r1
é o eixo que está na primeira coluna e na primeira linha do grupo.
Usei a ($(a) + (b)$)
sintaxe da calc
biblioteca porque ([xshift=0.2cm]left plots c1r1.north east)
não funcionou.
\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}
Resposta antiga
Eu gostaria de uma groupplots
solução única, mas uma solução alternativa é usar dois tikzpicture
s cada um com um groupplot
ambiente, onde a altura dos eixos do segundo é a metade da altura dos do primeiro.
\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}
Responder2
Também é possível fazer isso dentro de um único grupo 2x6 agrupando 2 por 2 os gráficos da coluna da esquerda:
\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}
Eu não escrevo nenhum groupplot há meses (além deste ^^), então tenho uma pergunta bônus: como posso definir um estilo para um groupplot, \tikzstyle
não funciona… Isso tornaria meu código um pouco mais curto :)
Editar:
Uma resposta foi dada por Torbjørn T., então atualizei minha resposta de acordo com a introdução de estilos.