在 pgfplots 中创建和使用样式?

在 pgfplots 中创建和使用样式?

我想知道是否有人可以给我指出一些好的资源,以了解 pgfplots 中的用户定义样式?我看过 pgfplots 手册,但它似乎只涉及这个主题。到目前为止,我已经能够定义一些自己的样式,并且可以毫无问题地调用它们,但我想扩展此功能,为此,我需要更多关于样式可以和不可以以及适当语法的详细信息。我的一些问题是:

问题 1:我可以定义嵌套样式吗?例如,我的序言定义 MyStyle1 如下:

\pgfplotsset{MyStyle1/.style={code-goes-here}}

然后我在我的文档中用如下方式调用此样式:

\begin{tikzpicture}
    \begin{axis}[MyStyle1]  
        \addplot[MyStyleA] pseudo-code;
    \end{axis}      
\end{tikzpicture}

我想做的是,如果轴使用 MyStyle1,则 MyStyleA 有一个定义,如果轴使用 MyStyle2,则 MyStyleA 有一个不同的定义。可以这样做吗?我该怎么做?

Q2:如何覆盖样式的某些部分?假设 MyStyle1 包含行xmin=5,我将 MyStyle1 应用于上述轴环境。我希望最小 x 值为 0,但使用 MyStyle1 中的所有其他设置。如何仅为此轴环境覆盖此功能(即不影响使用 MyStyle1 的任何其他内容)?

问题 3:样式中可以添加的内容有什么限制吗?我假设可以放在 [] 括号中的任何设置也可以放在样式中。此规则有任何例外或补充吗?

答案1

让我依次回答你们的问题。

Q1. 你绝对可以让一种风格定义另一种风格。手册中详细说明了你可以做什么tikz。但这里有一个例子。

\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}

\pgfplotsset{
    compat=1.15,
    MyStyle1/.style={
        MyStyleA/.style={red},
    },
    MyStyle2/.style={
        MyStyleA/.style={blue},
    },
}


\begin{document}
\begin{tikzpicture}
\begin{axis}[MyStyle1]
    \addplot [
        MyStyleA,
        domain=-3e-3:3e-3,
        samples=201,
    ]
    {exp(-x^2 / (2e-3^2))/(1e-3*sqrt(2*pi))};
\end{axis}
\end{tikzpicture}

\begin{tikzpicture}
\begin{axis}[MyStyle2]
    \addplot [
        MyStyleA,
        domain=-3e-3:3e-3,
        samples=201,
    ]
    {exp(-x^2 / (2e-3^2))/(1e-3*sqrt(2*pi))};
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

如您所见,MyStyle1定义MyStyleAredMyStyle2定义MyStyleAblue。 如果需要,您可以简单地使用Foo/.append style={...}而不是 来附加样式Foo/.style={...}

值得指出的是,如果您这样做的原因是您希望将某种特定样式应用于每个图,那么您可以像这样使用,而不是MyStyleA在每个图中设置并明确包含它。\addplot [MyStyleA]every axis plot/.append style={...}

\pgfplotsset{
    MyStyle1/.style={
        every axis plot/.append style={red},
    },
    MyStyle2/.style={
        every axis plot/.append style={blue},
    },
}

\begin{axis}[MyStyle1]
    \addplot [
        domain=-3e-3:3e-3,
        samples=201,
    ]
    {exp(-x^2 / (2e-3^2))/(1e-3*sqrt(2*pi))};
\end{axis}

这与前面的代码效果相同。

Q2. 通常,较新的样式会覆盖较早的样式。因此,在这种情况下,您可以使用[MyStyle1, xmin=0]

Q3. 据我所知,你可以把任何东西放入可以放入可选参数/ \pgfset/ \tikzset/的样式中\pgfplotsset

相关内容