替换 pgf-pie 中的数字

替换 pgf-pie 中的数字

我正在使用 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-piexstringpgf-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}

结果:

在此处输入图片描述

相关内容