Создание легенды для граней сетки - PullRequest
0 голосов
/ 06 июля 2018

Я построил около 10 графиков с использованием граней в Seaborn.Как я могу нарисовать легенду на каждом графике?Это текущий код, который у меня есть:

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

Если я включу plt.legend(), то легенда появится только на последнем графике.Как я могу нарисовать легенду на каждом графике в графе сетки граней?Или есть способ построить легенду в самом первом графике, а не в последнем графике?Заранее благодарю за помощь.

1 Ответ

0 голосов
/ 06 июля 2018

Вы можете добавить легенду к каждой оси отдельно, если вы выполняете итерации по ним. Используя пример из документации по морскому побережью:

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

Так что в вашем случае вам нужно будет сделать

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...