![使用 TikZ 的字符串列表标签饼图](https://linux22.com/image/312951/%E4%BD%BF%E7%94%A8%20TikZ%20%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%88%97%E8%A1%A8%E6%A0%87%E7%AD%BE%E9%A5%BC%E5%9B%BE.png)
这是我的 MWE(我知道不是最低的):
\documentclass{article}
\usepackage{tikz}
\definecolorseries{colorser}{rgb}{last}{blue}{green}
\def\piechart#1#2#3#4#5{%1:data,2:numberOfElements,3:colors,4:outerRadius,5:labels
\resetcolorseries[#2]{#3}
\edef\startangle{90}
\foreach [
remember=\endangle as \startangle,
evaluate=\i as \endangle using {\startangle-(\csname#1\endcsname[\i-1]/100*360)},
evaluate=\halfangle using {(\endangle-\startangle)/2+\startangle},
] \i in {1,...,#2} {%
\fill[{#3!![\i]}] (0,0) --++(\startangle:#4) arc (\startangle:\endangle:#4);
\draw[white, line width=0.75mm](0,0)--++(\startangle:#4+0.1pt);
% \node at (\halfangle:#4) {\pgfmathparse{#5[\i]}\pgfmathresult};% Error: "Package PGF Math Error: Unknown function.."
\node at (\halfangle:#4) {\csname#5\endcsname[\i]};
}
\draw[white,line width=0.75mm](0,0)--++(\startangle:#4);
\fill[white](0,0)circle [radius=#4*0.4];%
}
\begin{document}
\begin{tikzpicture}
\newcommand\shares{{50,30,15,5}}
\newcommand\labels{{"a","b","c","d"}}
\piechart{shares}{4}{colorser}{2cm}{labels}
\end{tikzpicture}
\end{document}
我是仍然尝试将标签添加到我的饼图中。目前它看起来是这样的:
正如您可能猜到的那样,我希望标签是:
- 蓝色部分
- ...
- d 在绿色部分
我还尝试了在 MWE 中注释掉的行,但导致了错误:
Package PGF Math Error: Unknown function `labels' (in 'labels[1]').
我首先认为字符串列表会是个问题,但由于我的链接这个问题对我没有帮助,我又一次一头雾水。再次感谢你的帮助!
答案1
您需要评估表达式,但数组的编号从起始索引 0 开始。
\node at (\halfangle:#4) {\pgfmathparse{\csname#5\endcsname[\i-1]}\pgfmathresult};
\begin
还要避免使用以和开头的宏名\end
。