![使用 pgf-pie 迭代下一个饼图上的颜色](https://linux22.com/image/397687/%E4%BD%BF%E7%94%A8%20pgf-pie%20%E8%BF%AD%E4%BB%A3%E4%B8%8B%E4%B8%80%E4%B8%AA%E9%A5%BC%E5%9B%BE%E4%B8%8A%E7%9A%84%E9%A2%9C%E8%89%B2.png)
目前,如果您有两个饼图,它将再次从颜色 0 开始。是否有可能从下一个颜色(上一个饼图使用的颜色之后的颜色)开始?
\begin{tikzpicture}
\pie{58.54/A, 39.02/B, 2.44/C}
\end{tikzpicture}
Some text.
\begin{tikzpicture}
\pie{87.8/A, 12.2/B}
\end{tikzpicture}
这里,第二个再次从 color0 开始,但我希望它继续使用 color3
答案1
这是gigi 的回答,我正在使用其代码。它不需要太多手动操作,但它重新定义了pgf-pie
包中的内容(似乎 TeXLive 中没有提供)。您需要发出\pgfpiecolorsync
才能继续下一个饼图中的颜色。
\documentclass{article}
\usepackage{pgf-pie}
\newcounter{piecolor}
\newcounter{piemaxcolor}
\makeatletter
\renewcommand{\pgfpie@findColor}[1]
{
\pgfmathparse{int(mod(#1+\number\value{piecolor},\value{pgfpie@colorLength}))}
\let\ci\pgfmathresult
\setcounter{piemaxcolor}{\ci}
\foreach \c [count=\j from 0] in \color {
\ifnum \j=\ci
\xdef\thecolor{\c}
\thecolor
\breakforeach
\fi
}
}
\newcommand{\pgfpiecolorsync}{\setcounter{piecolor}{\value{piemaxcolor}\stepcounter{piecolor}}}
\newcommand{\pgfpiecolorreset}{\setcounter{piecolor}{0}}
\makeatother
\begin{document}
\begin{tikzpicture}
\pie{58.54/A, 39.02/B, 2.44/C}
\pgfpiecolorsync
\end{tikzpicture}
\begin{tikzpicture}
\pie{87.8/A, 12.2/B}
\pgfpiecolorsync
\end{tikzpicture}
\begin{tikzpicture}
\pie{58.54/A, 39.02/B, 2.44/C}
\pgfpiecolorsync
\end{tikzpicture}
\begin{tikzpicture}
\pie{87.8/A, 12.2/B}
\pgfpiecolorsync
\end{tikzpicture}
\end{document}
答案2
手动方法:从此列表中删除前 n 种颜色:
\documentclass{article}
\usepackage{pgf-pie}
\begin{document}
\begin{tikzpicture}
\pie{58.54/A, 39.02/B, 2.44/C}
\end{tikzpicture}
Some text.
\begin{tikzpicture}
\pie[color={
% blue!60, cyan!60, yellow!60,
orange!60, red!60,
blue!60!cyan!60, cyan!60!yellow!60, red!60!cyan!60,
red!60!blue!60, orange!60!cyan!60}]{87.8/A, 12.2/B}
\end{tikzpicture}
\end{document}