如何调整Seaborn散点图图例中标记点的大小?
调整Seaborn scatterplot图例标记大小的方法
Seaborn的scatterplot函数中,s参数仅控制绘图区域内散点的大小,不会同步修改图例里的标记尺寸。要调整图例标记大小,需要手动获取图例对象并修改其属性,具体实现如下:
修改后的示例代码
import seaborn as sns import pandas as pd import matplotlib.pyplot as plt df = pd.DataFrame() df['Y_LOCATION'] = [1, 1, 1, 2, 2, 4] df['X_LOCATION'] = [1, 2, 3, 4, 3, 1] df['VALUE'] = [-0.45, -0.14, -0.12, -0.36, -0.48, -0.20] sns.set(rc={'figure.figsize':(40,20)}) sns.set(font_scale=2) # 显式指定参数名(新版本Seaborn推荐写法) ax = sns.scatterplot(x=df.Y_LOCATION, y=df.X_LOCATION, hue=df.VALUE, s=800, palette="Greens_r") # 获取图例并调整标记大小 legend = ax.legend() for handle in legend.legendHandles: handle.set_sizes([800]) # 可根据需求修改数值,比如设为600 plt.show()
关键说明
- 新版本Seaborn建议显式传入
x、y、hue等参数,避免位置参数导致的潜在问题 - 通过
ax.legend()获取图例对象后,遍历legendHandles(每个handle对应图例中的一个标记),调用set_sizes()方法设置标记大小,数值可与绘图时的s参数保持一致,也可单独调整
内容的提问来源于stack exchange,提问作者Sheldon
相关产品推荐
相关产品推荐

