
Hice una pregunta similar antes:¿Crear un gráfico grupal de 2x2 con un gráfico +1 al lado?
En ese momento, usar el entorno de subfigura no era un problema. Pero no quiero utilizar el entorno de subfigura ahora, así que estoy buscando una solución diferente. La trama que quiero crear es:
|-----------------|
| | Plot 4 |
| Plot 1 |--------|
| | Plot 5 |
|-----------------|
| | Plot 6 |
| Plot 2 |--------|
| | Plot 7 |
|-----------------|
| | Plot 8 |
| Plot 3 |--------|
| | Plot 9 |
|-----------------|
Los gráficos 1,2,3 tienen concretamente el mismo eje x (y para aquellos interesados es un gráfico de respuesta al impulso), así como los gráficos 4,...,9 (que son gráficos de Bode, magnitud + fase).
¿Alguien tiene alguna idea? Creo que los diagramas de grupo deberían ampliarse para que tengan algunas capacidades tabulares.
Si está buscando un ejemplo mínimo, realmente no tengo uno ya que no sé cómo crearlo, pero el código de la solución de mi pregunta anterior podría ayudarlo a comenzar.https://tex.stackexchange.com/a/117685/15360
PD. Por cierto, la solución no tiene por qué ser necesariamente utilizar el entorno de diagrama de grupo. La razón principal por la que uso groupplot con mucha frecuencia es porque sé que la alineación es buena. También cuando muestra las etiquetas x e y, así como los ticks de x e y. Por lo tanto, se trata de que la alineación sea correcta.
Respuesta1
Se podrían utilizar dos groupplots
entornos, donde la altura de los ejes en el segundo sea la mitad que la del primero. Para alinearlos correctamente coloqué la primera subtrama de la segunda parcela grupal en relación con la primera parcela grupal, con
\nextgroupplot[anchor=north west, at={($(left plots c1r1.north east) + (0.2cm,0)$)}]
left plots
es una etiqueta para el primer diagrama de grupo, agregada con
group style={
group name=left plots,
..
}
y left plots c1r1
es el eje que está en la primera columna y primera fila del grupo.
Utilicé la ($(a) + (b)$)
sintaxis de la calc
biblioteca porque ([xshift=0.2cm]left plots c1r1.north east)
no funcionó.
\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}
Antigua respuesta
Me gustaría una groupplots
solución única, pero una solución alternativa es usar dos tikzpicture
s, cada uno con un groupplot
entorno, donde la altura de los ejes en el segundo sea la mitad de la altura de los del primero.
\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}
Respuesta2
También es posible hacer esto dentro de un único lote grupal de 2x6 agrupando 2 por 2 los gráficos de la columna de la izquierda:
\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}
No he escrito ningún diagrama de grupo en meses (aparte de este ^^), así que tengo una pregunta adicional: ¿cómo puedo definir un estilo para un diagrama de grupo? \tikzstyle
No funciona... Esto haría que mi código fuera un poco más corto :)
Editar:
Torbjørn T. dio una respuesta, así que actualicé mi respuesta introduciendo estilos en consecuencia.