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

如何修改Matplotlib图例中Patch的透明度而不影响散点图?

仅修改Matplotlib散点图图例单个项的透明度(不改动原图)

问题描述

想调整散点图图例里某一项的透明度,试了下面的代码:

import matplotlib.pyplot as plt

# 注意这里设置了alpha值            vvvvvvvvvv
plt.scatter(range(10), range(10), alpha=0.15, label='Mount Resegone')
plt.scatter(range(10), [0]*10,    alpha=0.15, label='Rimini Beach')
plt.gca().get_legend_handles_labels()[0][0].set_alpha(1.0)
plt.legend()
plt.show()

但这么做会同时把原图里的散点透明度也改了——原因是图例的handle和原图的PathCollection是同一个实例,修改属性会同步影响两边。

旧方案失效情况

之前有人建议用handle._legmarker.set_alpha(1)单独改图例标记,但新版Matplotlib里这招没用了,会抛出错误:

'PathCollection' object has no attribute '_legmarker'

可行解决方案

其实有更简单的方法,直接获取图例的legendHandles来修改透明度,只会影响图例,不会改动原图:

import matplotlib.pyplot as plt

plt.scatter(range(10), range(10), alpha=0.15, label='Mount Resegone')
plt.scatter(range(10), [0]*10, alpha=0.15, label='Rimini Beach')
plt.legend().legendHandles[0].set_alpha(1.0)
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 06:01:08