我的问题是关于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 运行后产生以下内容:
现在,假设我想让所有图都变成红色(或粗体,或其他颜色——我想将参数传递给组中的所有图)。我觉得我应该能够做一些类似的事情
\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}