Seaborn散点图自定义图例仅显示单个标签的问题咨询
Seaborn散点图图例自定义标签不生效问题解决
问题根因
你在调用sns.scatterplot()时设置了legend=False,该参数会直接阻止Seaborn生成对应3个物种分类的图例句柄,后续调用scatter.legend()时没有足够的句柄匹配你传入的3个自定义标签,最终只会显示单个标签。
解决方法
方法一:保留自动生成的图例资源(推荐)
去掉legend=False参数,Seaborn会自动生成对应3个分类的图例句柄,直接替换标签即可:
import seaborn as sns import matplotlib.pyplot as plt iris = sns.load_dataset("iris") scatter = sns.scatterplot(x='sepal_length', y ='sepal_width', hue='species', data=iris) scatter.legend(labels = ['set', 'versi', 'vir'], loc='upper right') plt.show()
方法二:手动获取句柄生成图例
如果确实需要在绘图时先隐藏图例,可以手动获取绘图生成的句柄后再关联自定义标签:
import seaborn as sns import matplotlib.pyplot as plt iris = sns.load_dataset("iris") scatter = sns.scatterplot(x='sepal_length', y ='sepal_width', hue='species', data=iris, legend=False) # 手动获取3个分类对应的图例句柄 handles, _ = scatter.get_legend_handles_labels() scatter.legend(handles=handles, labels = ['set', 'versi', 'vir'], loc='upper right') plt.show()
内容的提问来源于stack exchange,提问作者Raj
相关产品推荐
相关产品推荐

