наложение нескольких вызовов на FacetGrid от Seaborn с различными группировками оттенков - PullRequest
1 голос
/ 19 апреля 2019

Используя seaborn FacetGrid, я бы хотел обновить параметр группировки hue между несколькими вызовами отображения.В частности, у меня изначально есть пользовательская функция построения графиков, которая принимает группировку «оттенка», поверх которой я хочу показать среднее значение по группам (поэтому игнорирование оттенка и суммирование всех данных).

например,

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

Создает одну цветную линию регрессии для каждой группы.Как я могу обновить FacetGrid, чтобы игнорировать группировку hue при втором вызове map?В этом примере я хочу получить два цветных графика рассеяния с наложением одной (черной) линии регрессии.

1 Ответ

0 голосов
/ 19 апреля 2019

Оттенок используется FacetGrid для группировки входных данных. Он не может сгруппировать его только частично.

Решение matplotlib, вероятно, будет выглядеть как

import matplotlib.pyplot as plt
import seaborn as sns

tips = sns.load_dataset("tips", cache=True)

n = len(tips["time"].unique())
usmoker = tips["smoker"].unique()

fig, axes = plt.subplots(ncols=n, sharex=True, sharey=True)

for ax, (time, grp1) in zip(axes.flat, tips.groupby("time")):
    ax.set_title(time)
    ax.set_prop_cycle(plt.rcParams["axes.prop_cycle"])

    for smoker in usmoker:
        grp2 = grp1[grp1["smoker"] == smoker]
        sns.regplot("total_bill", "tip", data=grp2, label=str(smoker), 
                    fit_reg=False, ax=ax)
    ax.legend(title="Smoker")  

for ax, (time, grp1) in zip(axes.flat, tips.groupby("time")):
    sns.regplot("total_bill", "tip", data=grp1, ax=ax, scatter=False, 
                color="k", label="regression line")


plt.show()

enter image description here

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