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

如何使用Pandas固定饼图切片的显示顺序及颜色

解决方案:用Pandas饼图直接实现固定切片顺序与颜色

完全可以直接通过Pandas的饼图功能实现你的需求,不需要切换到Matplotlib原生绘图(毕竟Pandas的绘图API本身就是基于Matplotlib封装的)。核心思路是强制固定切片的顺序,并手动指定对应颜色,具体步骤如下:

1. 固定切片顺序

默认情况下,value_counts()会按数值从大到小排序切片,这会导致不同数据集的切片顺序不一致。我们可以通过reindex()方法,强制让结果按照['Female', 'Male']的顺序排列——不管原数据中哪个类别占比更高,Female都会是第一个切片,Male是第二个。

2. 固定对应颜色

在调用plot.pie()时,通过colors参数传入一个颜色列表,列表的顺序和我们指定的切片顺序对应(第一个颜色对应Female,第二个对应Male),这样就能保证两个数据集的同类别颜色完全一致。

修改后的完整代码

import pandas as pd
import matplotlib.pyplot as plt

# 定义固定的类别顺序和对应颜色
category_order = ['Female', 'Male']
fixed_colors = ['#ff6b6b', '#4ecdc4']  # 你可以替换成任意喜欢的颜色代码

# 处理s1并绘制饼图
s1 = pd.Series(['Female', 'Female', 'Female', 'Male', 'Male', 'Female'])
s1_counts = s1.value_counts(normalize=True).reindex(category_order)
s1_counts.plot.pie(
    autopct='%.1f %%',
    ylabel='',
    startangle=90,
    colors=fixed_colors
)

# 处理s2并绘制饼图
s2 = pd.Series(['Male', 'Male', 'Female', 'Female', 'Female', 'Male', 'Male', 'Female', 'Male'])
s2_counts = s2.value_counts(normalize=True).reindex(category_order)
s2_counts.plot.pie(
    autopct='%.1f %%',
    ylabel='',
    startangle=90,
    colors=fixed_colors
)

plt.show()

效果说明

  • 不管s1还是s2的数据集,饼图的第一个切片始终是Female,第二个始终是Male;
  • Female会固定使用fixed_colors中的第一个颜色,Male固定使用第二个颜色,完美满足你需要的可视化对比需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 06:39:06