![pgfplots 中轴样式选项的顺序](https://linux22.com/image/388029/pgfplots%20%E4%B8%AD%E8%BD%B4%E6%A0%B7%E5%BC%8F%E9%80%89%E9%A1%B9%E7%9A%84%E9%A1%BA%E5%BA%8F.png)
我试图了解轴选项的应用顺序,以及什么会覆盖什么(在我使用style
而不是的情况下append style
)。
重新定义样式时,应覆盖先前的选项,但post
似乎可以像 一样工作append
。我注意到 #4 总是被忽略,即使它是唯一的,并且 #1 和 #2 会覆盖 #3,但如果我删除 #,则 #2 和 #3 可以一起工作。那么不同位置的两个键之间的层次结构是什么?
PS:我查看了第 361 页的手册...但我仍然不清楚
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{
every axis/.style={...}, %1
every axis post/.style{...}, %2
}
\begin{document}\begin{tikzpicture}[
every axis/.style={...}, %3
every axis post/.style={...}, %4
]
\begin{axis}[ ... ] %5
\addplot {x};
\end{axis}
\end{tikzpicture}\end{document}
经过一些实验,它看起来像:
- #4 中的选项始终被忽略
- 首先应用 #3 中的选项
- #1 中的选项覆盖 #3 中的所有选项
- #2 中的选项附加到 #1 和 #3
- #5 中的选项将附加到所有其他选项中
是这样吗?局部选项(#3 和 #4)难道不应该比全局选项(#1 和 #2)具有更高的优先级吗?append style
为我的文档定义全局样式并为图片定义局部样式(可能包含更多axis
环境)的最佳做法是什么(也考虑一下)?
编辑:全局设置(厚度,...)使用和本地设置(覆盖设置)的最佳解决方案是什么(有或没有post
和) ?append
x|y axis line style
\pgfplotsset
axis x|y line
axis x|y line style
答案1
我在很大程度上同意您所写的内容,但我认为如果这些是选项,则当前形式的选项%3
和%4
无效。这是因为,如果您将选项传递给环境,则您位于“目录”中。您可以通过添加前缀来更改路径。如果这样做,这些选项将在完整的中实现,即在每个轴中。因此,您可以称它们为“半本地”。另一方面,选项自动位于 pgfplots 的“正确路径”中。它们是全局的,而那些仅适用于相应的轴,并且可以称为“本地”(没有“半”)。以下 MWE 说明了这一点,其中我剔除了所有选项,因为它们没有添加任何有关局部性的信息(并且因为我没有看到自己要经历 5!=120 个选项 ;-)。pgfplots
tikzpicture
tikz
/pgfplots/
tikzpicture
\pgfplots{...}
\begin{axis}[...]
post
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\tikzset{A/.style={color=blue},
B/.style={color=red},
C/.style={color=green!60!black}}
\begin{document}
\begin{tabular}{cc}
\pgfplotsset{every axis/.style=A}
\begin{tikzpicture}[/pgfplots/every axis/.style=B]
\begin{axis}[C,title={ABC}]
\addplot {x};
\end{axis}
\end{tikzpicture}
&
\pgfplotsset{every axis/.style=B}
\begin{tikzpicture}[/pgfplots/every axis/.style=A]
\begin{axis}[C,title={BAC}]
\addplot {x};
\end{axis}
\end{tikzpicture}\\
\pgfplotsset{every axis/.style=B}
\begin{tikzpicture}[/pgfplots/every axis/.style=C]
\begin{axis}[A,title={BCA}]
\addplot {x};
\end{axis}
\end{tikzpicture}
&
\pgfplotsset{every axis/.style=A}
\begin{tikzpicture}[/pgfplots/every axis/.style=C]
\begin{axis}[B,title={ACB}]
\addplot {x};
\end{axis}
\end{tikzpicture}\\
\pgfplotsset{every axis/.style=C}
\begin{tikzpicture}[/pgfplots/every axis/.style=A]
\begin{axis}[B,title={CAB}]
\addplot {x};
\end{axis}
\end{tikzpicture}
&
\pgfplotsset{every axis/.style=C}
\begin{tikzpicture}[/pgfplots/every axis/.style=B]
\begin{axis}[A,title={CBA}]
\addplot {x};
\end{axis}
\end{tikzpicture}\\
\end{tabular}
\end{document}