我在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数组中.这使您:
因此,根据您的情况,您需要
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()