你会看到下面的代码,它为你绘制了一个饼图
\documentclass{article}
\usepackage{pgf-pie}
\begin{document}
\begin{tikzpicture}
\pie[rotate=20, color={white}, sum=auto, after number=, radius=2] {10/, 10/, 10/, 10/, 10/,10/, 10/, 10/}
\end{tikzpicture}
\end{document}
`
我想要数字 1 到 8 而不是 10。使用该命令\pie
可以实现吗?
答案1
我不知道是否pgf-pie
支持这一点。否则,您可以使用以下代码来创建图表。它还可以在newcommand
或pic
环境中使用,以使其可重复使用。
您可以调整参数mysegments
(段数)和myradius
(段半径)进行定制。
\documentclass[tikz, border=5mm]{standalone}
\begin{document}
\begin{tikzpicture}
\def\mysegments{8}
\def\myradius{2}
\foreach \x in {1,...,\mysegments} {
\draw (0,0) --++ (360/\mysegments*\x:\myradius) arc (360/\mysegments*\x:360/\mysegments*(\x+1):\myradius);
\node at (360/\mysegments*\x-180/\mysegments:\myradius/2) {\x};
}
\end{tikzpicture}
\end{document}
答案2
如果您希望各个段可以具有不同的大小,您可以这样做:
代码
\documentclass[tikz, border=2mm]{standalone}
\begin{document}
\newcommand{\Pie}[4][white]%
%[fill color] parts/color, size, rotate
{ \xdef\PieSum{0}
\foreach \Seg/\Col in {#2}
{ \pgfmathparse{\PieSum+\Seg}
\xdef\PieSum{\pgfmathresult}
}
\xdef\PieDone{0}
\begin{scope}[rotate=#4]
\foreach \Seg/\Col [count=\C] in {#2}
{ \pgfmathsetmacro{\PieDeg}{\Seg/\PieSum*360}
\fill[#1, \Col, draw=black] (0,0) -- ++ (\PieDone:#3) arc (\PieDone:\PieDone+\PieDeg:#3) -- cycle;
\node at (\PieDone+\PieDeg/2:#3*0.7) {\C};
\pgfmathparse{\PieDone+\PieDeg}
\xdef\PieDone{\pgfmathresult}
}
\end{scope}
}
\begin{tikzpicture}
\Pie[orange!50]{5/blue!50,7/,13/,19/green!50,11/}{5}{90}
\end{tikzpicture}
\end{document}
输出
答案3
我理解这个问题是问如何使用pgf-pie 包(不是如何使用 TikZ 来实现)它的工作原理如下:
\documentclass[tikz, border=5pt]{standalone}
\usepackage{pgf-pie}
\begin{document}
\begin{tikzpicture}[]
\pie[rotate=20, color={white}, sum=auto, radius=2,
text=inside, % <----
before number=\phantom, % <----
after number=,] {1/1, 1/2, 1/3, 1/4, 1/5, 1/6, 1/7, 1/8}
\end{tikzpicture}
\end{document}