![Gruppenstilschlüssel funktioniert nicht in pgfplotsset](https://rvso.com/image/309869/Gruppenstilschl%C3%BCssel%20funktioniert%20nicht%20in%20pgfplotsset.png)
Wenn ich einen Stil mithilfe von festlegen möchte groupplot
, gehe ich etwa so vor:
\begin{groupplot}[
group style={
group size=1 by 2,
vertical sep=1cm,
},
]
pgfplotsset
Ich habe jedoch festgestellt, dass das Ergebnis folgendermaßen aussieht, wenn ich versuche, dies als Stil zu speichern :
\pgfplotsset{
mygroup/.style={
group style={
group size=1 by 2,
vertical sep=1cm,
},
},
}
Beim Anwenden des Stils wird der Inhalt des group style
Schlüssels scheinbar ignoriert. Die Werte anderer Schlüssel werden beachtet und korrekt angewendet, nicht jedoch die von group style
. Wenn ich Änderungen an den Schlüsseln im Pfad vornehmen möchte group
, muss ich sie vollständig angeben:
\pgfplotsset{
mygroup/.style={
group/group size=1 by 2,
group/vertical sep=1cm,
},
}
Aber das scheint mir ein merkwürdiges, nicht standardmäßiges Verhalten zu sein, da Sie diese Schreibweise nicht zum Angeben von Optionen für verwenden würden \begin{groupplot}
.
Ist das das erwartete Verhalten? Was ist die empfohlene Methode zum Definieren von Gruppenstilen in pgfplotsset
? Hier ist ein MWE, in dem Sie die verschiedenen Optionen auskommentieren können:
\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}
Antwort1
Das Problem ist eigentlich einfacher, als ich dachte.
In der Definition von \begin{groupplot}[#1]
sehen wir Folgendes
\pgfkeysinstallkeyfilter{/pgf/key filters/equals}{/pgfplots/group style}% \pgfkeysinstallkeyfilter{/pgf/key filters/is descendant of}{/pgfplots/group}% \pgfqkeysfiltered{/pgfplots}{#1}%
Intuitiv sagt es, dass
- wenn du es sagst
[group style=something]
, wird es verarbeitet; - wenn du es sagst
[group/something=else]
, wird es verarbeitet; - andernfalls wird der Schlüssel ignoriert.
Und durch einige Experimente wird tatsächlich Folgendes gesagt:
- wenn du es sagst
[group style=something]
, wird es verarbeitet;- wenn Sie sagen
[mygroup]
, was genauso definiert ist wie oben, dann ist esignoriert.
- wenn Sie sagen
- wenn du es sagst
[group/something=else]
, wird es verarbeitet;- wenn Sie sagen
[mygroup]
, was genauso definiert ist wie oben, dann wird es verarbeitet.
- wenn Sie sagen
- andernfalls wird der Schlüssel ignoriert.
Ich fürchte, es gibt keine einfache Möglichkeit, dies zu beheben. Das Filtern ist eine der Kernfunktionen vonpgf-Schlüssel. Vielleicht gibt es einen Trick, mit dem man herumspielt .cd
und .retry
so weiter. Ich kann es nicht sagen.
Schließlich,pgf-Schlüsselmacht viele bizarre Dinge. Zum Beispiel behauptet das Handbuch, dass
Es ist genau ein Schlüsselfilter wirksam und dieser wird vom
.install key filter handler
oder von installiert\pgfkeysinstallkeyfilter
.
Aber hier werden nur zwei Filter installiert.