将参数传递给 groupplots 内的 addplot

将参数传递给 groupplots 内的 addplot

我的问题是关于pgfplots和的基本用法groupplots。这是一个绘制 x 幂的简单示例:

\documentclass[tikz]{standalone}

\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}

  \begin{groupplot}[
      group style={group size=2 by 2},
    ]
    \nextgroupplot \addplot {x};
    \nextgroupplot \addplot {x^2};
    \nextgroupplot \addplot {x^3};
    \nextgroupplot \addplot {x^4};

  \end{groupplot}
\end{tikzpicture}
\end{document}

通过 pdflatex 运行后产生以下内容:

groupplots 示例绘制 x 的幂

现在,假设我想让所有图都变成红色(或粗体,或其他颜色——我想将参数传递给组中的所有图)。我觉得我应该能够做一些类似的事情

  \begin{groupplot}[
      group style={group size=2 by 2},
      red,
    ]

但这给了我一个错误。我知道我可以通过在 every 之后I do not know the key '/pgfplots/red' and I am going to ignore it添加来解决这个问题,或者通过使用and ,但这似乎重复且效率低下。有没有更好的方法可以做到这一点?[red]addplot\def\mystyle{red}\addplot[\mystyle]

PS:我对 pgfplots 的内部工作原理不是很了解,因此,如果有任何答案可以解释,我将不胜感激为什么有时候是这样的。

答案1

执行此操作的方法是使用循环列表(或多循环列表)。因为\addplot[very thick, red, only marks]您告诉 pgfplot 在当前行/图上做什么,但没有告诉接下来会发生什么。您询问的是更改图内所有行的默认绘图。这就是循环列表的作用。它们将第一行变为\addplot红色,将第二行变为蓝色,依此类推。您可以使用\nextgroupplot[cycle multiindex* list = {very thick\nextlist red\nextlist only marks\nextlist}]或为 groupplot 中的所有图设置默认值来执行此操作。

\documentclass[tikz]{standalone}

\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}

  \begin{groupplot}[
      group style={group size=2 by 2},
      cycle multiindex* list = {very thick\nextlist red\nextlist only marks\nextlist}
  ]
    \nextgroupplot \addplot {x}; \addplot {x^2};
    \nextgroupplot[cycle list = {red, blue}] \addplot {x}; \addplot {x^2};
    \nextgroupplot \addplot[green] {x}; \addplot {x^2};
    \nextgroupplot \addplot {x}; \addplot {x^2};
  \end{groupplot}
\end{tikzpicture}
\end{document}

相关内容