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 :
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")
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")
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)
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')
Jetez un œil à ce numéro: https://stackoverflow.com/questions / 40050597 / matplotlib-plot -multiple-lines-on-the-same-chart