Seaborn Lmplot одна линия на категорию (оттенок) и общая линия - PullRequest
0 голосов
/ 24 апреля 2020

При использовании lmplot я могу создать разные строки для каждой категории, например:

sns.lmplot( x='x', y='y', data=df, hue='z')

Есть ли способ агрегировать все это? Я имею в виду, что если у меня есть три категории для z (1,2,3), я хочу иметь строку для 1, линию для 2, линию для 3 и общую линию тренда для всего набора данных.

Значение df будет примерно таким:

| x | y  | z |
|---|----|---|
| 1 | 2  | a |
| 2 | 6  | b |
| 3 | 6  | a |
| 4 | 12 | b |
| 5 | 10 | a |
| 6 | 18 | b |

Возможно ли это?

z = a имеет времена 2, z = b времена 3.

1 Ответ

0 голосов
/ 28 апреля 2020

Одна из возможностей - вернуться к осям и перераспределить данные с помощью regplot Пожалуйста, обратитесь к https://seaborn.pydata.org/generated/seaborn.regplot.html#seaborn .regplot

import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns

sns.set(style="white")
df = pd.DataFrame({'x': [1,2,3,4,5,6],
                   'y': [2,6,6,12,10,18],
                   'z': ['a', 'b', 'a', 'b','a', 'b']})
g = sns.lmplot(x='x', 
               y='y', 
               data=df, 
               hue='z',
               legend=False) # delegate legend to plt.legend further down
sns.regplot(x='x', y='y', data=df, 
            ax=g.axes.flat[0], 
            color="g",
            label='a+b',
            scatter=False,
            ci=68
            )
plt.legend()
g.savefig('/Users/massimopinto/Desktop/regplot.png', bbox_inches='tight')

создает

overlay with .map over the facetgrid axes

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