seaborn / matplotlib изменить количество столбцов в объекте легенды - PullRequest
0 голосов
/ 31 мая 2019

Я видел Создание легенды с несколькими столбцами в сюжете Python Seaborn , но я думаю, что мой вопрос немного другой.Короче говоря, у меня есть датафрейм, который я строю в seaborn lmplot и получаю FacetGrid.Проблема в том, что существует множество значений для hue, поэтому я получаю супер длинную легенду из одного столбца.Пример кода ниже:

ers = sns.lmplot(
    data=emorb,
    x="Pb",
    y="Nd",
    row="Ridge Sys",
    hue="Seg Name",
    scatter=True,
    fit_reg=False,
    scatter_kws={"alpha":0.7, "edgecolor": "w"},
    palette=sns.color_palette("bright", 20),
    legend=True
)

ers.set(ylim=(0.5122,0.5134))

Я могу получить доступ к объекту легенды, который создан путем вызова ers._legend, и это возвращает объект с типом Legend (в основном, объект matplotlib).Однако я не могу затем вызвать этот объект легенды, чтобы изменить количество столбцов, например:

l = ers._legend
l(ncols=9)

Любые предложения, или я упускаю что-то, возможно, более очевидное, например способ перерисовкилегенда и указать какие-либо параметры?

Спасибо.

1 Ответ

1 голос
/ 31 мая 2019

Упс, разобрался:

Объект FacetGrid имеет атрибут fig, то есть

g = sns.lmplot()
parent_mpl_figure = g.fig

И так, если я установлю legend=False в sns.lmplot(),Затем я могу указать parent_mpl_figure.legend(labels=[], ncol=9, bbox_to_anchor=(1,1))

Надеюсь, кому-то еще / сейчас поучительно, чтобы выяснить, как каждый Facet может охватить полную цветовую палитру, чтобы различные группы hue в каждой группе Facetлегче отличить ...

...