You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TikZ/pgf-pie饼图中隐藏数值为0的类别标签?

解决pgf-pie饼图中0值类别显示多余标签的问题

针对pgf-pie绘制饼图时,数值为0的类别在图例中显示多余“0”标签的问题,提供三种实用解决方式:

方式一:手动移除0值类别(简单直接)

直接从饼图数据中删除所有数值为0的条目,并同步调整颜色列表(确保颜色数量与有效条目匹配)。修改后的代码如下:

\documentclass[conference]{IEEEtran}

\usepackage{xcolor}
\usepackage{tikz}
\usepackage{pgf-pie}

\definecolor{ELMpos}{RGB}{178, 255, 102} % Light lime green
\definecolor{ROUNDneg}{RGB}{150, 54, 86} % Burgundy
\definecolor{ELMneg}{RGB}{229, 102, 102} % Soft red
\definecolor{ANON}{RGB}{102, 204, 178} % Mint green
\definecolor{CONCISE}{RGB}{224, 255, 255} % Pale cyan

\begin{document}

\begin{figure}
    \centering
    \begin{tikzpicture}
        \pie[
            text=legend,
            radius=2,
            color={ELMneg, ELMpos, CONCISE}, % 仅保留有效条目对应的颜色
            sum=auto
        ]{
            2/Disagree,
            7/Agree,
            10/Strongly agree
        }
    \end{tikzpicture}
    \caption{}
\end{figure}

\end{document}

方式二:自动过滤所有0值类别(适合动态数据)

如果数据是动态生成的,可借助etoolbox包的循环功能自动过滤数值为0的条目,无需手动修改数据。代码如下:

\documentclass[conference]{IEEEtran}

\usepackage{xcolor}
\usepackage{tikz}
\usepackage{pgf-pie}
\usepackage{etoolbox} % 用于循环处理数据

\definecolor{ELMpos}{RGB}{178, 255, 102} % Light lime green
\definecolor{ROUNDneg}{RGB}{150, 54, 86} % Burgundy
\definecolor{ELMneg}{RGB}{229, 102, 102} % Soft red
\definecolor{ANON}{RGB}{102, 204, 178} % Mint green
\definecolor{CONCISE}{RGB}{224, 255, 255} % Pale cyan

% 定义过滤0值条目的宏
\def\filterpieentries#1{%
  \def\processedentries{}%
  \forcsvlist{\processpieentry}{#1}%
}
\def\processpieentry#1/#2{%
  \ifnum#1>0
    \ifdefempty{\processedentries}{%
      \edef\processedentries{#1/#2}%
    }{%
      \edef\processedentries{\processedentries, #1/#2}%
    }%
  \fi
}

\begin{document}

\begin{figure}
    \centering
    \begin{tikzpicture}
        % 先过滤数据
        \filterpieentries{0/Strongly disagree,2/Disagree,0/Neither agree nor disagree,7/Agree,10/Strongly agree}
        \pie[
            text=legend,
            radius=2,
            color={ROUNDneg, ELMneg, ANON, ELMpos, CONCISE},
            sum=auto
        ]{\processedentries} % 使用过滤后的条目
    \end{tikzpicture}
    \caption{}
\end{figure}

\end{document}

方式三:单独隐藏特定0值类别

若仅需隐藏“Neither agree nor disagree”这一类别,直接从数据列表中删除或注释该条目即可:

\pie[
    text=legend,
    radius=2,
    color={ROUNDneg, ELMneg, ANON, ELMpos, CONCISE},
    sum=auto
]{
    0/Strongly disagree,
    2/Disagree,
    % 0/Neither agree nor disagree, % 注释或删除该行
    7/Agree,
    10/Strongly agree
}

内容的提问来源于stack exchange,提问作者Chris Schankula

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 06:12:27