![替换 pgf-pie 中的数字](https://linux22.com/image/422544/%E6%9B%BF%E6%8D%A2%20pgf-pie%20%E4%B8%AD%E7%9A%84%E6%95%B0%E5%AD%97.png)
我正在使用 pgf-pie 创建饼图。通常,数字会写入切片中。我想用另一个字符串替换数字,同时保留描述。
\begin{tikzpicture}
\pie[
/tikz/every pin/.style={align=left},
sum=auto,
radius=2,
text=pin,
rotate=120 ,
% before number=\phantom,
% after number=,
color={red!70,blue!70}
]{
14.850/$\textbf{Not supported}$\\ (59.7\%),
10.009/$\textbf{Supported}$\\ (40.3\%)
}
\end{tikzpicture}
因此,我想要的不是 14.850,而是 14850;我想要的不是 10.009,而是 10009。
那可能吗?
谢谢阿米特
答案1
更新:pgf-pie
已重命名一些内部结构。以下 MWE 适用于 2020 年 12 月 26 日 Github 上的版本(https://github.com/pgf-tikz/pgf-pie)。下面的原始代码仍然适用于 CTAN 上的当前版本(2020 年 5 月)。
\documentclass{article}
\usepackage{pgf-pie}
\usepackage{xstring}
\makeatletter
\renewcommand{\pgfpie@numbertext}[1]
{
\pgfpie@ifhidenumber{}{%
\pgfpie@beforenumber\StrSubstitute{#1}{.}{}\pgfpie@afternumber%
}
}
\makeatother
\begin{document}
\begin{tikzpicture}
\pie[
/tikz/every pin/.style={align=left},
sum=auto,
radius=2,
text=pin,
rotate=120 ,
color={red!70,blue!70}
]{
14.850/\textbf{Not supported}\\(59.7\%),
10.009/\textbf{Supported}\\ (40.3\%)
}
\end{tikzpicture}
\end{document}
对于编辑后提出的问题(打印不带点的原始标签),可以通过重新定义来快速解决问题,这是打印数字\pgfpie@numbertext
的内部宏。使用该包,您可以将点替换为空字符串。以下代码适用于旧版本(2020 年 5 月)。pgf-pie
xstring
pgf-pie
梅威瑟:
\documentclass{article}
\usepackage{pgf-pie}
\usepackage{xstring}
\makeatletter
\renewcommand{\pgfpie@numbertext}[1]
{
\ifhidenumber
\else
\pgfpie@beforenumber\StrSubstitute{#1}{.}{}\pgfpie@afternumber
\fi
}
\makeatother
\begin{document}
\begin{tikzpicture}
\pie[
/tikz/every pin/.style={align=left},
sum=auto,
radius=2,
text=pin,
rotate=120 ,
color={red!70,blue!70}
]{
14.850/\textbf{Not supported}\\(59.7\%),
10.009/\textbf{Supported}\\ (40.3\%)
}
\end{tikzpicture}
\end{document}
结果:
原始答案:
要用标签替换数字,可以使用hide number
和的组合text=inside
。请注意,由于文本相对较长,因此无法放入数字默认(居中)位置的切片内。您可以使用 引入一些垂直空间,将文本稍微向下推到左侧切片中。\vspace
这需要为负数,出于某种原因,它应该在第二行而不是第一行中指定。
梅威瑟:
\documentclass{article}
\usepackage{pgf-pie}
\begin{document}
\begin{tikzpicture}
\pie[
/tikz/every pin/.style={align=left},
sum=auto,
radius=2,
hide number,
text=inside,
rotate=120 ,
% before number=\phantom,
% after number=,
color={red!70,blue!70}
]{
14.850/\textbf{Not supported}\\\vspace{-10mm}(59.7\%),
10.009/\textbf{Supported}\\ (40.3\%)
}
\end{tikzpicture}
\end{document}
结果: