如何更改图例中散点标记的大小?

mcs*_*osh 5 python graph scatter matplotlib legend

我基本上是用 matplotlib 绘制散点图,但是,我已经改变了每个点的半径。

当我用来plt.legend()展示我的传奇时,它看起来像这样...... 在此输入图像描述

有没有命令可以减小圆的大小。我知道这可能是一个非常微不足道的问题,我已经尝试过搜索它!

Imp*_*est 6

该解决方案可能取决于图例中的标记是否应与原始大小相比进行缩放,或者是否需要独立于原始大小的恒定标记大小。

A. 缩放标记

您可以使用legend.markerscale rcParam

plt.rcParams["legend.markerscale"] = 0.3
Run Code Online (Sandbox Code Playgroud)

markerscale传说的论证。

plt.legend(markerscale=0.3)
Run Code Online (Sandbox Code Playgroud)

来自图例文档

markerscale: 无或 int 或 float

图例标记与原始绘制标记相比的相对大小。默认值为 None ,将从 legend.markerscale rcParam 中获取值。

例子:

import matplotlib.pyplot as plt
plt.rcParams["legend.markerscale"] = 0.3

plt.scatter([.3,.5], [.3,.6], s=1000, label="label")
plt.scatter([.7,.4], [.3,.6], s=81, marker="^", label="label2")
plt.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

请注意,这将同时缩放所有标记。

B. 设置恒定的标记大小

如果您希望图例中的标记大小保持不变,而与散点的实际大小无关,则解决方案会稍微复杂一些。您可以使用图例handler_map将所需的标记大小设置为图例手柄。

import matplotlib.pyplot as plt
from matplotlib.legend_handler import HandlerPathCollection

sc = plt.scatter([.3,.5], [.3,.6], s=1000, label="label")
plt.scatter([.7,.4], [.3,.6], s=[100,300], marker="^", label="label2")

marker_size = 36
def update_prop(handle, orig):
    handle.update_from(orig)
    handle.set_sizes([marker_size])

plt.legend(handler_map={type(sc): HandlerPathCollection(update_func=update_prop)})
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述