seaborn - 是否可以更改使用 FacetGrid.add_legend() 创建的图例的列数?
问题描述
下面的代码创建了一个 facegrid 的图例并将其放置在上面:
g = sns.FacetGrid(df, col="col", col_wrap=2, hue='key')
g = g.map(sns.lineplot, 'x', 'y')
g.add_legend()
g._legend.set_bbox_to_anchor((0.5, 1.05))
有没有办法控制数字列?它有一个_ncol
属性,但我还没有看到改变它的方法。手动更改它并不能完成这项工作。
解决方案
我add_legend
在 seaborn 源代码中找到了 的定义。它接受**kwargs
并将它们交给self.figure.legend(...)
or ax.legend(...)
。
所以可以简单地ncol=2
作为参数传递。这也应该是一个更好的方法是通过使用loc
和/或bbox_to_anchor
参数来定义图例的位置。
这是一个例子:
import seaborn as sns
tips = sns.load_dataset("tips")
g = sns.FacetGrid(tips, col="sex", hue="smoker")
g.map(sns.scatterplot, "total_bill", "tip", alpha=.7)
g.add_legend(ncol=2, bbox_to_anchor=(0.5,1.05));
推荐阅读
- windows - 如何显示格式化的月份名称?
- javascript - 使用 for 循环循环多个变量?
- typescript - 从 TypeScript 导入 CommonJS 的最向前兼容的方式是什么?
- android - 在 Android Studio 中安装 Sevntu
- c++ - multimap 是否保证插入顺序与其初始值设定项中给出的元素顺序相匹配?
- aspnetboilerplate - aspnetzero unAuthorizedRequest for 1st login
- xamarin - 如何在 xamarin (Android) 应用程序中删除导航返回按钮和页面标题之间的额外空间或减少额外空间?
- angular - 如何在 ngOnInit 方法中添加额外的验证器?
- python - Selenium Chrome 选项和功能
- r - 如何使用位于 R 表的一列中的数据创建图?