使用 pgf-pie 绘制饼图,切片上没有标签,但仍能标记各个切片

使用 pgf-pie 绘制饼图,切片上没有标签,但仍能标记各个切片

我正在尝试使用饼图来表示饼图。我想按以下方式标记图表: 在此处输入图片描述

但我希望百分比不出现在切片上。我在代码中添加了 /tikz/nodes={text opacity=0,overlay} 以产生以下结果:

\begin{tikzpicture}
\pie[rotate=90, explode=0.05, radius=1.5, /tikz/nodes={text opacity=0,overlay}]{33.33/Lizzie's Leftovers, 66.66/Amount Lizzie ate};
\end{tikzpicture}

在此处输入图片描述

这会删除百分比,也会删除切片标签。有没有办法只删除百分比?

答案1

给你! 在此处输入图片描述

\documentclass[tikz,border=5mm]{standalone}
\begin{document}
\begin{tikzpicture}[thick]
\draw[fill=cyan] 
(0,0)--(90:2) arc(90:-150:2)--cycle
(-30:2.2) node[right]{Amount Lazzie ate};

\draw[fill=blue!50,shift={(150:1mm)}] 
(0,0)--(90:2) arc(90:210:2)--cycle
(150:2.2) node[left]{Lazzie's Leftovers};
\end{tikzpicture}
\end{document}

答案2

更新:pgf-pie已更改一些内部内容。以下 MWE 适用于 Github 上的当前版本(https://github.com/pgf-tikz/pgf-pie,日期为2020年12月26日)。

\documentclass{article}
\usepackage{pgf-pie}
\usepackage{etoolbox}
\newtoggle{showpct}
\makeatletter
\patchcmd{\pgfpie@slice}%
{\pgfpie@scalefont{#3}\pgfpie@numbertext{#3}}%
{\iftoggle{showpct}{\pgfpie@scalefont{#3}\pgfpie@numbertext{#3}}{}}%
{}{}
\makeatother

\begin{document}
\togglefalse{showpct}
\begin{tikzpicture}
\pie[rotate=90, explode=0.05, radius=1.5]{33.33/Lizzie's Leftovers, 66.66/Amount Lizzie ate};
\end{tikzpicture}

\toggletrue{showpct}
\begin{tikzpicture}
\pie[rotate=90, explode=0.05, radius=1.5]{33.33/Lizzie's Leftovers, 66.66/Amount Lizzie ate};
\end{tikzpicture}

\end{document}

原始答案:您可以修改的代码pgf-pie以关闭百分比打印。可以使用etoolbox包进行修改,该包提供了一个命令\patchcmd。此命令有五个参数:要修改的命令、此命令中将受影响的代码片段、将插入的替换命令(代替第二个参数中指示的代码片段)以及两个参数(分别指定修改成功或失败时应执行的操作)。最后两个命令对于调试很有用,但一旦代码运行,它们通常会留空。

负责绘制百分比的代码位于 的第 59 行和 60 行pgf-pie.sty。您可以修改第二行以关闭打印。在下面的 MWE 中showpct使用了一个切换按钮(称为),这是由 提供的布尔值,etoolbox可用于根据切换按钮是真还是假来执行不同的代码。在这里,如果showpct切换按钮为真,则将执行原始代码,否则将不执行任何代码(因此不会打印百分比)。

由于\pgfpie@slice修改的命令包含@符号,因此修补需要用 和 括\makeatletter起来\makeatother

代码:

\documentclass{article}
\usepackage{pgf-pie}
\usepackage{etoolbox}
\newtoggle{showpct}
\makeatletter
\patchcmd{\pgfpie@slice}%
{\scalefont{#3}\beforenumber#3\afternumber}%
{\iftoggle{showpct}{\scalefont{#3}\beforenumber#3\afternumber}{}}%
{}{}
\makeatother

\begin{document}
\togglefalse{showpct}
\begin{tikzpicture}
\pie[rotate=90, explode=0.05, radius=1.5]{33.33/Lizzie's Leftovers, 66.66/Amount Lizzie ate};
\end{tikzpicture}

\toggletrue{showpct}
\begin{tikzpicture}
\pie[rotate=90, explode=0.05, radius=1.5]{33.33/Lizzie's Leftovers, 66.66/Amount Lizzie ate};
\end{tikzpicture}

\end{document}

结果:

在此处输入图片描述

相关内容