You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何增大Matplotlib图例中的标记符号尺寸?

解决Matplotlib图例标记过小的问题

这个问题我做可视化的时候也碰到过——散点图上的标记大小刚好合适,但图例里的小符号缩成一团根本看不清!别担心,只需要简单调整图例的参数就能搞定,下面给你两种实用的方法:

方法一:直接在plt.legend()中设置markersize

这是最直接的方式,只需要在调用图例的时候加上markersize参数,就能单独放大图例里的标记,完全不会影响散点图本身的大小:

import matplotlib.pyplot as plt

# 示例数据(替换成你的实际数据即可)
xs1 = [1,2,3,4,5]
ys1 = [2,4,6,8,10]
xs2 = [1,2,3,4,5]
ys2 = [1,3,5,7,9]

# 你的原散点图代码
plt.scatter(xs1, ys1, s=12, linewidths=0, marker='o', label='hello')
plt.scatter(xs2, ys2, s=12, linewidths=0, marker='x', label='hello')

# 关键:设置图例标记大小,数值可以根据需求调整
plt.legend(markersize=15)

plt.show()

这里的markersize控制的是图例标记的直径(对圆形标记)或边长(对叉形标记),和散点图的s参数(控制面积)不是完全对应的,你可以多试几个数值找到最舒服的大小。

方法二:手动调整图例手柄(更灵活)

如果需要对每个图例标记单独设置大小,或者做更精细的控制,可以先获取图例对象,再逐个调整手柄的尺寸:

import matplotlib.pyplot as plt

# 示例数据
xs1 = [1,2,3,4,5]
ys1 = [2,4,6,8,10]
xs2 = [1,2,3,4,5]
ys2 = [1,3,5,7,9]

plt.scatter(xs1, ys1, s=12, linewidths=0, marker='o', label='hello')
plt.scatter(xs2, ys2, s=12, linewidths=0, marker='x', label='hello')

# 获取图例对象
leg = plt.legend()
# 遍历每个图例手柄,设置标记大小(这里的数值对应散点的s参数)
for handle in leg.legendHandles:
    handle.set_sizes([30])  # 你可以给不同手柄设置不同数值

plt.show()

这种方法适合需要差异化调整的场景,比如想让其中一个图例标记更大更突出。

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

火山引擎 最新活动