Seaborn ecdfplot如何调整图例条目之间的间距?
Seaborn ecdfplot图例条目间距调整方案
错误原因说明
你之前两种方案失败的原因分别是:
- 调用
plt.legend(labelspacing=20)时,该函数会强制重建图例覆盖原有图例,而ecdfplot生成的图例句柄不会被plt.legend默认检索到,因此抛出「找不到带标签的句柄用于图例」的错误,同时原有图例消失。 - 调用
g.get_legend().legend(labelspacing=20)时,g.get_legend()已经返回了matplotlib的Legend实例,该实例本身没有legend方法,因此触发属性错误。
正确实现方案
方案1:绘图后修改现有图例属性
直接获取已生成的图例对象,调用set()方法修改间距参数即可,代码如下:
import seaborn as sns import matplotlib.pyplot as plt tips = sns.load_dataset('tips') g = sns.ecdfplot(data=tips, x="total_bill", hue="time") # 调整现有图例的条目间距 g.get_legend().set(labelspacing=20) plt.show()
方案2:绘图时提前指定图例参数
如果使用seaborn的FacetGrid级接口(比如通过displot绘制ecdf图),可以通过legend_kws参数在绘图时直接指定间距:
import seaborn as sns import matplotlib.pyplot as plt tips = sns.load_dataset('tips') g = sns.displot(data=tips, x="total_bill", hue="time", kind="ecdf", legend_kws={"labelspacing": 20}) plt.show()
内容的提问来源于stack exchange,提问作者a11
相关产品推荐
相关产品推荐

