![A chave de estilo de grupo não funciona em pgfplotsset](https://rvso.com/image/309869/A%20chave%20de%20estilo%20de%20grupo%20n%C3%A3o%20funciona%20em%20pgfplotsset.png)
Quando eu quiser definir um estilo usando groupplot
, farei algo assim:
\begin{groupplot}[
group style={
group size=1 by 2,
vertical sep=1cm,
},
]
No entanto, descobri que se eu tentar salvar isso como um estilo usando pgfplotsset
, assim:
\pgfplotsset{
mygroup/.style={
group style={
group size=1 by 2,
vertical sep=1cm,
},
},
}
aplicar o estilo parece ignorar o conteúdo da group style
chave. O valor das outras chaves é observado e aplicado corretamente, mas não o de group style
. Se eu quiser fazer alterações nas chaves do group
caminho, preciso especificá-las inteiramente:
\pgfplotsset{
mygroup/.style={
group/group size=1 by 2,
group/vertical sep=1cm,
},
}
Mas isso me parece um comportamento estranho e fora do padrão, já que você não usaria essa forma de escrever ao especificar opções para \begin{groupplot}
.
Este é o comportamento esperado? Qual é a maneira recomendada de definir estilos de grupo pgfplotsset
? Aqui está um MWE, onde você pode descomentar as diferentes opções:
\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}
Responder1
O problema é realmente mais simples do que eu pensava.
Na definição de \begin{groupplot}[#1]
vemos o seguinte
\pgfkeysinstallkeyfilter{/pgf/key filters/equals}{/pgfplots/group style}% \pgfkeysinstallkeyfilter{/pgf/key filters/is descendant of}{/pgfplots/group}% \pgfqkeysfiltered{/pgfplots}{#1}%
Intuitivamente ele diz que
- se você disser,
[group style=something]
então será processado; - se você disser,
[group/something=else]
então será processado; - caso contrário, a chave será ignorada.
E através de algumas experiências o que realmente diz é que
- se você disser,
[group style=something]
então será processado;- se você disser
[mygroup]
, que é definido como igual ao acima, então éignorado.
- se você disser
- se você disser,
[group/something=else]
então será processado;- se você disser
[mygroup]
, que é definido como igual ao acima, ele será processado.
- se você disser
- caso contrário, a chave será ignorada.
Receio que não haja uma maneira fácil de corrigir isso. A filtragem é um dos principais recursos doteclas pgf. Talvez exista um truque para brincar .cd
e .retry
assim por diante. Eu não posso dizer.
Afinal,teclas pgffaz muitas coisas bizarras. Por exemplo, o manual afirma que
Há exatamente um filtro de chave em vigor e ele é instalado pelo
.install key filter handler
ou por\pgfkeysinstallkeyfilter
.
Mas aqui basta instalar dois filtros.