![グループ スタイル キーが pgfplotsset で機能しない](https://rvso.com/image/309869/%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%20%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%20%E3%82%AD%E3%83%BC%E3%81%8C%20pgfplotsset%20%E3%81%A7%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%AA%E3%81%84.png)
を使用してスタイルを設定したい場合はgroupplot
、次のようにします。
\begin{groupplot}[
group style={
group size=1 by 2,
vertical sep=1cm,
},
]
ただし、次のようにして を使用してスタイルとして保存しようとするとpgfplotsset
、次のようになることがわかりました。
\pgfplotsset{
mygroup/.style={
group style={
group size=1 by 2,
vertical sep=1cm,
},
},
}
スタイルを適用すると、group style
キーの内容が無視されるようです。他のキーの値は観察され、正しく適用されますが、 の値は観察されませんgroup style
。パス内のキーを変更したい場合はgroup
、それらを完全に指定する必要があります。
\pgfplotsset{
mygroup/.style={
group/group size=1 by 2,
group/vertical sep=1cm,
},
}
しかし、これは奇妙で非標準的な動作であるように思われます。 にオプションを指定するときにこの書き方は使用しないからです\begin{groupplot}
。
これは想定された動作ですか? でグループ スタイルを定義するための推奨される方法は何ですかpgfplotsset
? さまざまなオプションのコメントを解除できる MWE を次に示します。
\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}
答え1
実際、問題は私が考えていたよりも単純です。
の定義では\begin{groupplot}[#1]
次のようになります
\pgfkeysinstallkeyfilter{/pgf/key filters/equals}{/pgfplots/group style}% \pgfkeysinstallkeyfilter{/pgf/key filters/is descendant of}{/pgfplots/group}% \pgfqkeysfiltered{/pgfplots}{#1}%
直感的にそれは
- と言うと
[group style=something]
処理されます。 - と言うと
[group/something=else]
処理されます。 - それ以外の場合、キーは無視されます。
そしていくつかの実験を通して、実際に言えることは
- と言うと
[group style=something]
処理されます。- は
[mygroup]
上記と同じであると定義されており、無視された。
- は
- と言うと
[group/something=else]
処理されます。[mygroup]
上記と同じように定義されていると言うと、それが処理されます。
- それ以外の場合、キーは無視されます。
残念ながら、これを簡単に修正する方法はありません。フィルタリングは、pgfキー.cd
おそらく、などを巧みに操るトリックが存在するのでしょう .retry
。私には分かりません。
結局、pgfキー奇妙なことがたくさんある。例えばマニュアルにはこう書いてある。
有効なキー フィルターは 1 つだけあり、 または によってインストールされ
.install key filter handler
ます\pgfkeysinstallkeyfilter
。
しかし、ここでは 2 つのフィルターをインストールするだけです。