Ich habe die Zeichnung von Balkendiagrammen mit mehreren Serien mit Matplotlib und Seaborn verglichen.
Zusammenfassend ist ** Seaborn nützlich **
--Umgebung
Die linke Seite ist Matplotlib und die rechte Seite ist Seaborn. Es ist das gleiche wie beim Betrachten der Grafiken, aber Seaborn ist einfach, bis Sie diese zeichnen. Die Farbe des Stocks ist die gleiche, aber Seaborn ist etwas heller. Vielleicht gibt es irgendwo eine Einstellung wie diese ...
Es ist ein Fluss, bis das obige Balkendiagramm gezeichnet wird.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from io import StringIO
import numpy as np
%matplotlib inline
data = ('Anzahl der Personen,Sex,Alter\n'
'58,männlich,18 Jahre alt\n'
'25,männlich,19 Jahre alt\n'
'42,männlich,20 Jahre alt\n'
'60,Weiblich,18 Jahre alt\n'
'42,Weiblich,19 Jahre alt\n'
'70,Weiblich,20 Jahre alt\n'
)
df = pd.read_csv(StringIO(data), dtype={'Anzahl der Personen':'int32'})
print(df)
↓
Anzahl der Personen | Sex | Alter |
---|---|---|
58 | männlich | 18 Jahre alt |
25 | männlich | 19 Jahre alt |
42 | männlich | 20 Jahre alt |
60 | Weiblich | 18 Jahre alt |
42 | Weiblich | 19 Jahre alt |
70 | Weiblich | 20 Jahre alt |
plt.rcParams['font.family'] = 'Yu Gothic' #Vermeiden Sie verstümmelte japanische Schriftzeichen mit Yu Gothic als Standardeinstellung
plt.rcParams['font.size'] = 20 #Stellen Sie die Standardschriftgröße ein
fig,ax = plt.subplots(1, 2, figsize=(24,10)) #Erstellen Sie einen Zeichenbereich von 24 Zoll Breite und 10 Zoll Höhe mit 1 Zeile und 2 Spalten
#Die Balkendiagrammzeichnung mit matplotlib teilt die df-Daten ein wenig
labels = list(df['Alter'].unique()) #Listen Sie die Positionen auf, die den Beschriftungen der X-Achse von df entsprechen
number_male = list(df['Anzahl der Personen'].loc[0:2]) #dfの上から3行のAnzahl der Personenの数値(男性の数値)をリスト化
number_female = list(df['Anzahl der Personen'].loc[3:5]) #dfの下から3行のAnzahl der Personenの数値(女性の数値)をリスト化
left = np.arange(len(number_male)) #Zum Festlegen der Koordinaten zum Einfügen der X-Achsenbeschriftung
print(left) #Der Inhalt von links[0 1 2]
width = 0.4 #Wenn bei einem Diagramm mit mehreren Reihen nur die Beschriftungskoordinaten der X-Achse übrig bleiben, verschiebt sich der Korrekturbetrag
#Balkendiagramm mit Matplotlib
ax[0].bar(x=left, height=number_male, width=width, align='center', color='royalblue') #Balkendiagramm für männlichen Teil hinzugefügt
ax[0].bar(x=left+width, height=number_female, width=width, align='center', color='tomato') #Balkendiagramm für weiblichen Teil hinzugefügt
ax[0].set_xticks(left + width / 2) #Geben Sie die Position der Achse von 18 Jahren, 19 Jahren und 20 Jahren an
ax[0].set_xticklabels(labels=labels) #"18 Jahre alt, 19 Jahre alt, 20 Jahre alt"Zum Zeichnen angegeben
ax[0].set_xlabel('Alter') #X-Achsenbeschriftung
ax[0].set_ylabel('Anzahl der Personen') #Beschriftung der Y-Achse
ax[0].legend(list(df['Sex'].unique()), title='Sex', loc='upper right') #凡例の男性、女性、タイトルをSex、位置を右上へ設定
ax[0].set_title('Balkendiagramm mit Matplotlib', size=30) #Titel einstellen
#Balkendiagramm mit Seaborn
sns.barplot(data=df, x='Alter', y='Anzahl der Personen', hue='Sex', ax=ax[1], palette={'männlich':'royalblue','Weiblich':'tomato'}) #data=Geben Sie df an, setzen Sie X und Y, Farbton='Sex'とすることでSex別で分けてくれる
ax[1].legend(loc='upper right', title='Sex') #Stellen Sie den Legendentitel und die Position oben rechts ein
ax[1].set_title('Balkendiagramm mit Seaborn', size=30) #Titel einstellen
plt.savefig('Ich habe versucht, eine Grafik zu zeichnen.png', bbox_inches='tight', pad_inches=0.3) #Speichern Sie das gezeichnete Bild
plt.show() #Zeichnung
Dadurch wird hier das Balkendiagramm gezeichnet (#graph zum Zeichnen).
Anzahl der Zeilen | |
---|---|
matplotlib | 8 |
seaborn | 3 |
Seaborn ist einfacher zu zeichnen, weil Sie es sehen können! Der Code besteht aus zwei Zeilen, einer Legende und einem Titel, sodass Sie mehrere Reihen von Balkendiagrammen mit nur einer Zeile zeichnen können.