![La clave de estilo de grupo no funciona en pgfplotsset](https://rvso.com/image/309869/La%20clave%20de%20estilo%20de%20grupo%20no%20funciona%20en%20pgfplotsset.png)
Cuando quiero establecer un estilo usando groupplot
, haré algo como esto:
\begin{groupplot}[
group style={
group size=1 by 2,
vertical sep=1cm,
},
]
Sin embargo, descubrí que si intento guardarlo como un estilo usando pgfplotsset
, así:
\pgfplotsset{
mygroup/.style={
group style={
group size=1 by 2,
vertical sep=1cm,
},
},
}
aplicar el estilo parece ignorar el contenido de la group style
clave. El valor de otras claves se observa y se aplica correctamente, pero no el de group style
. Si quiero realizar cambios en las claves de la group
ruta, tengo que especificarlas por completo:
\pgfplotsset{
mygroup/.style={
group/group size=1 by 2,
group/vertical sep=1cm,
},
}
Pero esto me parece un comportamiento extraño y no estándar, ya que no usarías esta forma de escribir al especificar opciones para \begin{groupplot}
.
Es este el comportamiento esperado? ¿Cuál es la forma recomendada de definir estilos de grupo en pgfplotsset
? Aquí tenéis un MWE, donde podéis descomentar las diferentes opciones:
\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary[pgfplots.groupplots,calc]
\pgfplotsset{
compat=1.12,
mygroup/.style={
group style={
group size=1 by 2,
vertical sep=1cm,
},
every axis plot/.append style={
smooth,
}
},
mygroupb/.style={
group/group size=1 by 2,
group/vertical sep=1cm,
every axis plot/.append style={
smooth,
}
},
}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{groupplot}[
% This style works without "group style"
% mygroupb,
% This style doesn't apply "group style"
% mygroup,
% But adding it manually here works
% group style={
% group size=1 by 2,
% vertical sep=1cm,
% },
]
\nextgroupplot
\addplot+[samples=5,domain=-3:3] {exp(-x^2+1)};
\addplot+[samples=5,domain=-3:3] {exp(-x^2)};
\addplot+[samples=5,domain=-3:3] {exp(-x^2-1)};
\nextgroupplot
\addplot+[samples=5,domain=-3:3] {exp(-x^2+1)};
\addplot+[samples=5,domain=-3:3] {exp(-x^2)};
\addplot+[samples=5,domain=-3:3] {exp(-x^2-1)};
\end{groupplot}
\end{tikzpicture}
\end{figure}
\end{document}
Respuesta1
En realidad, el problema es más simple de lo que solía pensar.
En la definición de \begin{groupplot}[#1]
vemos lo siguiente
\pgfkeysinstallkeyfilter{/pgf/key filters/equals}{/pgfplots/group style}% \pgfkeysinstallkeyfilter{/pgf/key filters/is descendant of}{/pgfplots/group}% \pgfqkeysfiltered{/pgfplots}{#1}%
Intuitivamente dice que
- si dices
[group style=something]
entonces se procesa; - si dices
[group/something=else]
entonces se procesa; - de lo contrario, la clave se ignora.
Y a través de algunos experimentos lo que realmente dice es que
- si dices
[group style=something]
entonces se procesa;- si usted dice
[mygroup]
, que se define como el mismo que el anterior, entonces esignorado.
- si usted dice
- si dices
[group/something=else]
entonces se procesa;- si dice
[mygroup]
, que se define como el mismo que el anterior, entonces se procesa.
- si dice
- de lo contrario, la clave se ignora.
Me temo que no existe una manera fácil de solucionar este problema. El filtrado es una de las características principales declavespgf. Tal vez exista un truco para jugar con .cd
etc. .retry
No puedo decir.
Después de todo,clavespgfhace muchas cosas raras. Por ejemplo, el manual afirma que
Hay exactamente un filtro clave en vigor y lo instala o
.install key filter handler
por\pgfkeysinstallkeyfilter
.
Pero aquí solo instala dos filtros.