matplotlib 修改图例中的面片,在散点图中保留面片

tmb3ates  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(98)

我可以更改散点图图例中项目的不透明度

import matplotlib.pyplot as plt

# note the alpha value            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._legmarker.set_alpha(1))在最近的Matplotlib中不起作用,引发AttributeError

'PathCollection' object has no attribute '_legmarker'


幸运的是,它甚至更容易获得预期的行为

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)


nr7wwzry

nr7wwzry1#

编辑:您可以只做:

leg = plt.legend()
leg.legendHandles[0].set_alpha(1)

字符串
来源:Set legend symbol opacity
更新:有更简单的方法!首先,在>创建图例时将其分配给变量:

leg = plt.legend()


然后:

for lh in leg.legendHandles: 
   lh.set_alpha(1)


或者,如果上面的方法不起作用(你可能使用的是旧版本的matplotlib):

for lh in leg.legendHandles: 
   lh._legmarker.set_alpha(1)


使您的标记分别对于plt.plot或plt.scatter不透明。
请注意,在plt.plot上简单地使用lh.set_alpha(1)将使图例中的线而不是标记不透明。您应该能够使这两种可能性适用于其他打印类型。

相关问题