如何将常见的 \addplot 选项保存在变量中。

如何将常见的 \addplot 选项保存在变量中。

下图中有三个点,每个点都有一些共同的选项,\addplot例如fill=blue, mark=*, thick, only marks, mark size=4pt, point meta=explicit symbolic,并且有一些区分每个点的选项,例如color=blue。当我尝试编辑一些共同的选项时,由于代码重复,我必须对每个点重复编辑。

有没有办法让我将常用选项存储在变量中,从而消除重复。类似这样的\addplot [unique1=value1, \commonFeaturesVariable] { ...

我发现我可以进行全局默认设置但是我不想这样做因为它会破坏依赖于原始默认选项的同一文档中的图形。

enter image description here

\documentclass{IEEEtran}
\usepackage{tikz}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
    axis x line = bottom,
    axis y line = left,
    scaled y ticks = false,
    enlarge x limits=0.1,
    nodes near coords,
]
    \addplot[color=blue, fill=blue, mark=*, thick, only marks, mark size=4pt, point meta=explicit symbolic]
        coordinates {
        (1, 4)
        };

    \addplot[color=red, fill=red, mark=*, thick, only marks, mark size=4pt, point meta=explicit symbolic]
        coordinates {
            (2, 9)
            };

    \addplot[color=brown, fill=brown, mark=*, thick, only marks, mark size=4pt, point meta=explicit symbolic]
        coordinates {
            (3, 7)
            };
\end{axis}
\end{tikzpicture}
\end{document}

答案1

当您使用 PGF/Ti 时Z/pgfplots 您已经加载了pgfkeys包。您可以使用它来定义样式:

\documentclass{IEEEtran}
\usepackage{tikz}
\usepackage{pgfplots}

\pgfplotsset{%
  myaddplot/.style = {%
    mark=*,
    only marks,
    mark size=4pt,
    point meta=explicit symbolic,
  }
}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
    axis x line = bottom,
    axis y line = left,
    scaled y ticks = false,
    enlarge x limits=0.1,
    nodes near coords,
]
    \addplot[color=blue, fill=blue, myaddplot]
        coordinates {
        (1, 4)
        };

    \addplot[color=red, fill=red, myaddplot]
        coordinates {
            (2, 9)
            };

    \addplot[color=brown, fill=brown, myaddplot]
        coordinates {
            (3, 7)
            };
\end{axis}
\end{tikzpicture}
\end{document}

上面将定义一个全局样式myaddplot,定义后即可使用。

正如 marmot 先生在评论中所说,fill=<color>如果您总是希望绘制和填充颜色相同,则可以在此处省略,因为您指定了mark = *。此外,如果您使用相同的fillcolor,那么thick也不会产生任何效果,因为您正在绘制only marks

但是,如果您想要不同的颜色,您可以让您的样式带有参数:

\pgfplotsset{%
  myaddplot/.style args = {#1/#2}{%
    mark=*,
    only marks,
    mark size=4pt,
    point meta=explicit symbolic,
    color=#1,
    fill=#2,
  }
}

然后使用为:

\addplot[myaddplot=blue/blue]
    coordinates {
    (1, 4)
    };

相关内容