我的文档中有很多 PGFplot,它们始终具有一致的风格,并通过共享循环列表进行管理。
现在我想在同一个 PGFplot 中重新使用以前的绘图样式。
举个例子,这里我想说第三个图应该使用与第一个图相同的样式,但不指定该样式是什么(因为这将在循环列表的其他地方给出)。
(抱歉,图片右侧裁剪得不太好看 :P)
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
%and define new styles like this:
% \pgfplotsset{
% ...
%}
\begin{document}
\begin{tikzpicture}
\begin{axis}[ylabel=y,
xlabel=x,]
\addplot
coordinates
{
(0,10)
(10,0)
};
\addlegendentry{Descending}
\addplot
coordinates
{
(0,3)
(10,5)
};
\addlegendentry{Ascending}
\addplot
coordinates
{
(0,7)
(10,5)
};
% Reuse descending style
\end{axis}
\end{tikzpicture}
\end{document}
我希望第三个棕色图具有与第一个蓝色图相同的样式,但无需手动指定样式细节,如blue
、mark=o
等。可以直接做到这一点吗?
或者,如果不可能的话,我可以在活动循环列表中为第三个图加载第一个样式吗?
答案1
pgfplots
带有\label
/\ref
机制来标记图并在其他地方引用其样式。虽然此机制旨在在文本内部的某个地方生成图例,但也可以使用键访问标记图的样式选项refstyle
:
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
%and define new styles like this:
% \pgfplotsset{
% ...
%}
\begin{document}
\begin{tikzpicture}
\begin{axis}[ylabel=y,
xlabel=x,]
\addplot
coordinates
{
(0,10)
(10,0)
};
\addlegendentry{Descending}
\label{plot:1}
\addplot
coordinates
{
(0,3)
(10,5)
};
\addlegendentry{Ascending}
\addplot[refstyle={plot:1}]
coordinates
{
(0,7)
(10,5)
};
% Reuse descending style
\end{axis}
\end{tikzpicture}
\end{document}
请注意,这需要对文档进行两次编译。有关此机制的详细信息,\label
请\ref
参阅手册中的“带有标签和引用的图例”部分。
答案2
或者,如果不可能的话,我可以在活动循环列表中为第三个图加载第一个样式吗?
您可以使用
\pgfplotsset{cycle list shift=-2}
将循环列表计数器向前或向后移动,我们可以通过在第三个图之前添加上述命令来实现我们需要的。
请注意,这不会累积...因此如果您希望第四个图上升,则需要添加:
\pgfplotsset{cycle list shift=-2}
再次。