Как я могу показать несколько линий на графике Seaborn? - PullRequest
1 голос
/ 14 апреля 2020

Я хочу нарисовать три линии на графике точек морского побережья. Три строки основаны на метке, названной для Total Confirmed, Total Death, Total Recovered

Вот мой набор данных

      Date     Total Confirmed  Total Death Total Recovered
0   1/22/20         555            17           28
1   1/23/20         654            18           30
2   1/24/20         941            26           36
3   1/25/20         1434           42           39
4   1/26/20         2118           56           52

Код, который я написал, показывает только одно значение и не показывает другие два значения. Как я могу исправить свой код так, чтобы он отображал все три строки с точки зрения графика журнала, потому что их результаты отличаются друг от друга.

plt.figure(figsize=(18,7))
ax = sns.pointplot(data = df, x='Date', y='Total Confirmed', color="b")
plt.title('General Trend', fontsize=22, y=1.015)
plt.xlabel('month-day-year', labelpad=16)
plt.ylabel('# of people', labelpad=16)
ax.figure.legend()
plt.xticks(rotation=90);
plt.savefig('images/image1.png')

Ответы [ 4 ]

2 голосов
/ 14 апреля 2020

Создайте три pointplot отдельно и добавьте их в одну фигуру. У вас может быть шкала y быть логарифмической c настройка yscale="log" в ax.set:

fig, ax = plt.subplots(figsize=(18,7))
c=sns.pointplot(data = df, x='Date', y='TotalConfirmed', color="b", 
                label='Total Confirmed')
d=sns.pointplot(data = df, x='Date', y='TotalDeath', color="r", 
                label='Total Death')
r=sns.pointplot(data = df, x='Date', y='TotalRecovered', color="g", 
                label='Total Recovered')
ax.set_title('GeneralTrend', fontsize=22, y=1.015)
ax.set_xlabel('month-day-year', labelpad=16)
ax.set_ylabel('# of people', labelpad=16)
ax.set(yscale="log")
t=plt.xticks(rotation=45)

enter image description here

1 голос
/ 14 апреля 2020

Другой вариант, упомянутый выше, - это использование .plot() метода pandas.DataFrame:

fig, ax = plt.subplots(figsize=(18,7))
df.plot(x='Date')

Вы также можете указать цвета в словаре, если хотите указать пользовательские цвета:

fig, ax = plt.subplots(figsize=(18,7))
df.plot(x='Date', colors=['r', 'g', 'b'])
1 голос
/ 14 апреля 2020

Вы можете просто создать другие графики на том же рисунке, например:

plt.figure(figsize=(18,7))

sns.pointplot(data = df, x='Date', y='Total Confirmed', color="b")
sns.pointplot(data = df, x='Date', y='Total Death', color="g")
sns.pointplot(data = df, x='Date', y='Total Recovered', color="r")
1 голос
/ 14 апреля 2020

вам нужно использовать melt на df:

df = df.melt("Date", ["Total Confirmed","Total Death","Total Recovered"])
ax = sns.pointplot(data = df, x='Date', y='value', hue="variable")
...