我基本上是用matplotlib绘制散点图,但是我已经通过半径变化了每个点。
当我使用plt.legend()
来显示我的图例时,它看起来像这样......
有没有命令可以减小圆的大小。我知道这可能是一个非常琐碎的问题,而且我已经尝试搜索它!
我基本上是用matplotlib绘制散点图,但是我已经通过半径变化了每个点。
当我使用plt.legend()
来显示我的图例时,它看起来像这样......
有没有命令可以减小圆的大小。我知道这可能是一个非常琐碎的问题,而且我已经尝试搜索它!
legend.markerscale
rcParam。plt.rcParams["legend.markerscale"] = 0.3
markerscale
参数来调整图例的标记大小。plt.legend(markerscale=0.3)
从图例文档中:
markerscale
:None或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()
请注意,这将同时缩放所有标记。
如果你希望图例中的标记大小保持不变,而不受散点图上实际点的大小影响,解决方案会稍微复杂一些。您可以使用图例的 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()
# Legend
handles, labels = ax.get_legend_handles_labels()
lgd = ax.legend(handles, labels, framealpha=1, ncol=1,
bbox_to_anchor=(1.02,1), loc=2, fontsize=8, borderaxespad=0.)
for legend_handle in lgd.legendHandles:
legend_handle.set_sizes([50])
legend.linewidth
不是 rcParam 的一部分。 - ImportanceOfBeingErnest