Вы можете добавить легенду к каждой оси отдельно, если вы выполняете итерации по ним. Используя пример из документации по морскому побережью:
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
. Это дает вам:
![Facetgrid with individual legends](https://i.stack.imgur.com/yxhya.png)
Так что в вашем случае вам нужно будет сделать
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()
Чтобы отобразить легенду только в верхнем левом графике, вы хотите получить доступ к первому axes
в массиве 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()
Что даст вам:
![Facetgrid with legend in first axes](https://i.stack.imgur.com/lCRM1.png)