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

如何设置matplotlib饼图部分区块为透明以高亮指定板块

实现方案

你只需要对ax1.pie()返回的扇形块对象(patches)的透明度属性做调整即可,Chemicals是你标签列表的第一个元素,对应patches列表的索引0,其余扇形块设置低透明度就能实现高亮效果。

修改后完整代码

import matplotlib.pyplot as plt

# 饼图数据,切片默认逆时针排序绘制
labels = 'Chemicals', 'Oil & gas', 'Textiles& Mining' , 'Food & Breverages', 'Others'
colors = ['#01579B','#2E86C1','#3498DB','#2874A6','#1B4F72']
sizes = [31, 24, 7, 5,33 ]
explode = (0, 0, 0, 0, 0)

fig1, ax1 = plt.subplots()
patches, texts, autotexts = ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', startangle=90, colors=colors, textprops={'fontsize': 13})
ax1.axis('equal')  # 等宽高比例保证饼图是圆形

# 高亮Chemicals板块,其余板块设置透明
highlight_index = labels.index("Chemicals")  # 自动获取目标板块索引,避免手动数错
for i, patch in enumerate(patches):
    if i != highlight_index:
        patch.set_alpha(0.2)  # 透明度可自定义,0为完全透明,1为完全不透明
        # 如果需要其余板块的标签和百分比也同步变浅,取消下面两行注释
        # texts[i].set_alpha(0.5)
        # autotexts[i].set_alpha(0.5)

# 设置百分比文本样式
[autotext.set_color('white') for autotext in autotexts]
[autotext.set_weight('bold') for autotext in autotexts]

plt.savefig('filename1.png', dpi=300)
plt.show()

关键修改说明

  • 用labels.index("Chemicals")自动获取目标板块的索引,不用手动数位置,避免标签顺序调整后代码失效
  • 遍历所有扇形块,非目标板块设置alpha参数降低透明度,数值可以根据需求调整
  • 可选同步调整非目标板块的标签、百分比文本的透明度,视觉效果更统一

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:24:02