1
votes

Comment puis-je afficher plusieurs lignes dans le graphique Seaborn?

Je veux dessiner trois lignes dans le graphe de points Seaborn. Trois lignes sont basées sur l'étiquette nommée pour Total confirmé, Mort totale, Total récupéré

Voici mon ensemble de données

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')

Le code que j'ai écrit est affiché une seule valeur et pas deux autres valeurs. Comment puis-je corriger mon code pour afficher les trois lignes en termes de graphique de journal, car leurs résultats sont différents les uns des autres.

      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


4 Réponses :


1
votes

vous devez utiliser melt sur le df:

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


0 commentaires

1
votes

Vous pouvez simplement créer d'autres graphiques dans la même figure, comme celui-ci:

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")


0 commentaires

2
votes

Créez les trois pointsplot séparément et ajoutez-les dans la même figure. Vous pouvez avoir l’échelle des y comme paramètre logarithmique yscale = "log" dans 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)

 entrez la description de l'image ici


0 commentaires

1
votes

Une autre option à celles mentionnées est d'utiliser la méthode .plot () d'un pandas.DataFrame:

fig, ax = plt.subplots(figsize=(18,7))
df.plot(x='Date', colors=['r', 'g', 'b'])

Vous peut également fournir des couleurs dans un dictionnaire si vous souhaitez spécifier des couleurs personnalisées:

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


0 commentaires