使用 pgf-pie 迭代下一个饼图上的颜色

使用 pgf-pie 迭代下一个饼图上的颜色

目前,如果您有两个饼图,它将再次从颜色 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}

在此处输入图片描述

相关内容