python-刻面网格图例

我在Seaborn中使用面网格绘制了约10张图形.如何在每个图中绘制图例?这是我目前的代码:

g = sns.FacetGrid(masterdata,row="departmentid",col = "coursename",hue="resulttype",size=5, aspect=1)
g=g.map(plt.scatter, "totalscore", "semesterPercentage")

如果我包含plt.legend(),则图例仅出现在最后一个图形中.如何在构面网格图中的每个图形中绘制图例?还是有办法在第一个图形而不是最后一个图形中绘制图例?预先感谢您的帮助.

解决方法:

如果在每个轴上进行迭代,则可以分别向每个轴添加图例.使用Seaborn文档中的示例:

import seaborn as sns

tips = sns.load_dataset("tips")

g = sns.FacetGrid(tips, col="time",  hue="smoker")
g.map(plt.scatter, "total_bill", "tip", edgecolor="w")

for ax in g.axes.ravel():
    ax.legend()

我们必须使用.ravel()的原因是因为轴存储在numpy数组中.这使您:

python-刻面网格图例

因此,根据您的情况,您需要

g = sns.FacetGrid(masterdata,row="departmentid",col = "coursename",hue="resulttype",size=5, aspect=1)
g.map(plt.scatter, "totalscore", "semesterPercentage")

for ax in g.axes.ravel():
    ax.legend()

要仅在左上图中显示图例,您要访问numpy数组中的第一个轴,它们的索引为[0,0].您可以通过例如

g = sns.FacetGrid(tips, col="time",  hue="smoker")
g.map(plt.scatter, "total_bill", "tip", edgecolor="w")

g.axes[0, 0].legend()

这将使您:
python-刻面网格图例

上一篇:python-使用指标变量而不是单列创建多面的matplotlib / seaborn图


下一篇:java8 :: 用法 (JDK8 双冒号用法)