J'ai comparé le dessin de graphiques à barres multi-séries avec matplotlib et seaborn.
En conclusion, c'est un article qui ** seaborn est pratique **
--Environnement
Le côté gauche est matplotlib et le côté droit est marin. C'est la même chose que de regarder les graphiques, mais seaborn est facile jusqu'à ce que vous les dessiniez. La couleur du bâton est la même, mais Seaborn est un peu plus clair. Peut-être qu'il y a un décor quelque part comme celui-ci ...
C'est un flux jusqu'à ce que le graphique à barres ci-dessus soit dessiné.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from io import StringIO
import numpy as np
%matplotlib inline
data = ('Nombre de personnes,sexe,âge\n'
'58,Masculin,18 ans\n'
'25,Masculin,19 ans\n'
'42,Masculin,20 ans\n'
'60,Femme,18 ans\n'
'42,Femme,19 ans\n'
'70,Femme,20 ans\n'
)
df = pd.read_csv(StringIO(data), dtype={'Nombre de personnes':'int32'})
print(df)
↓
Nombre de personnes | sexe | âge |
---|---|---|
58 | Masculin | 18 ans |
25 | Masculin | 19 ans |
42 | Masculin | 20 ans |
60 | Femme | 18 ans |
42 | Femme | 19 ans |
70 | Femme | 20 ans |
plt.rcParams['font.family'] = 'Yu Gothic' #Évitez les caractères japonais brouillés avec Yu Gothic comme paramètre par défaut
plt.rcParams['font.size'] = 20 #Définir la taille de police par défaut
fig,ax = plt.subplots(1, 2, figsize=(24,10)) #Créez un espace de dessin de 24 pouces de large et 10 pouces de haut avec 1 rangée et 2 colonnes
#Le dessin d'un graphique à barres avec matplotlib divise un peu les données df
labels = list(df['âge'].unique()) #Lister les emplacements correspondant aux étiquettes de l'axe X de df
number_male = list(df['Nombre de personnes'].loc[0:2]) #dfの上から3行のNombre de personnesの数値(男性の数値)をリスト化
number_female = list(df['Nombre de personnes'].loc[3:5]) #dfの下から3行のNombre de personnesの数値(女性の数値)をリスト化
left = np.arange(len(number_male)) #Pour spécifier les coordonnées pour coller l'étiquette de l'axe X
print(left) #Le contenu de gauche[0 1 2]
width = 0.4 #Dans le cas d'un graphe multi-séries, si les coordonnées de l'étiquette de l'axe X sont seulement à gauche, il se déplacera, donc le montant de la correction
#Graphique à barres avec matplotlib
ax[0].bar(x=left, height=number_male, width=width, align='center', color='royalblue') #Ajout d'un graphique à barres pour la partie masculine
ax[0].bar(x=left+width, height=number_female, width=width, align='center', color='tomato') #Ajout d'un graphique à barres pour la partie féminine
ax[0].set_xticks(left + width / 2) #Précisez la position de l'axe des 18 ans, 19 ans, 20 ans
ax[0].set_xticklabels(labels=labels) #"18 ans, 19 ans, 20 ans"Spécifié pour dessiner
ax[0].set_xlabel('âge') #Étiquette de l'axe X
ax[0].set_ylabel('Nombre de personnes') #Étiquette de l'axe Y
ax[0].legend(list(df['sexe'].unique()), title='sexe', loc='upper right') #凡例の男性、女性、タイトルをsexe、位置を右上へ設定
ax[0].set_title('Graphique à barres avec matplotlib', size=30) #Définir le titre
#Graphique à barres avec seaborn
sns.barplot(data=df, x='âge', y='Nombre de personnes', hue='sexe', ax=ax[1], palette={'Masculin':'royalblue','Femme':'tomato'}) #data=Spécifiez df, définissez X et Y, teinte='sexe'とすることでsexe別で分けてくれる
ax[1].legend(loc='upper right', title='sexe') #Définissez le titre et la position de la légende en haut à droite
ax[1].set_title('Graphique à barres avec seaborn', size=30) #Définir le titre
plt.savefig('J'ai essayé de dessiner un graphique.png', bbox_inches='tight', pad_inches=0.3) #Enregistrer l'image dessinée
plt.show() #dessin
Cela dessinera le graphique à barres (#Drawing Graph).
Nombre de lignes | |
---|---|
matplotlib | 8 |
seaborn | 3 |
Seaborn est plus facile à dessiner car vous pouvez le voir! Le code comporte deux lignes, une légende et un titre, vous pouvez donc dessiner plusieurs séries de graphiques à barres avec une seule ligne.