[PYTHON] [Grafikzeichnung] Ich habe versucht, ein mehrreihiges Balkendiagramm mit Matplotlib und Seaborn zu schreiben

Einführung

Ich habe die Zeichnung von Balkendiagrammen mit mehreren Serien mit Matplotlib und Seaborn verglichen.

Zusammenfassend ist ** Seaborn nützlich **

--Umgebung

Grafik zum Zeichnen

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 ... グラフを描画してみた.png

Zeichnungsfluss

Es ist ein Fluss, bis das obige Balkendiagramm gezeichnet wird.

Bibliothek installieren

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from io import StringIO
import numpy as np
%matplotlib inline

Erstellen Sie einen DataFrame

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

Zeichnen Sie ein Diagramm

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.

Recommended Posts

[Grafikzeichnung] Ich habe versucht, ein mehrreihiges Balkendiagramm mit Matplotlib und Seaborn zu schreiben
Ich habe ein gestapeltes Balkendiagramm mit matplotlib von Python erstellt und eine Datenbeschriftung hinzugefügt
Ich habe versucht, mit Python eine Liste von Primzahlen zu erstellen
Ich habe versucht, Bulls and Cows mit einem Shell-Programm zu erstellen
Ich habe versucht, mit Go einen exklusiven Kontrollmechanismus zu erstellen
(Matplotlib) Ich möchte ein Diagramm mit einer in Pixel angegebenen Größe zeichnen
Ich möchte mehrere Bilder mit matplotlib anzeigen.
Ich möchte mit Python in eine Datei schreiben
Ich habe versucht, einen periodischen Prozess mit CentOS7, Selenium, Python und Chrome durchzuführen
Ich habe eine einfache Mail-Sendeanwendung mit tkinter von Python erstellt
Ich möchte ein Element mit numpy in eine Datei schreiben und es überprüfen.
Erstellen Sie mit matplotlib ein gestapeltes Diagramm, das sowohl der positiven als auch der negativen Richtung entspricht
Ich habe versucht, eine einfache Bilderkennungs-API mit Fast API und Tensorflow zu erstellen
Ich habe versucht, ein Modell mit dem Beispiel von Amazon SageMaker Autopilot zu erstellen
Ich wollte die Anzahl der Zeilen in mehreren Dateien wissen und versuchte, sie mit einem Befehl abzurufen
Ich habe versucht, Funktionen mit SIFT von OpenCV zu extrahieren
Ich habe versucht, mit VOICEROID2 2 automatisch zu lesen und zu speichern
Ich habe versucht zusammenzufassen, wie man Matplotlib von Python verwendet
[Python] Wie zeichnet man mit Matplotlib ein Liniendiagramm?
Ich habe versucht, DCGAN mit PyTorch zu implementieren und zu lernen
Ich habe versucht, mit VOICEROID2 automatisch zu lesen und zu speichern
Ich habe versucht, Grad-CAM mit Keras und Tensorflow zu implementieren
Ich habe versucht, die alternative Klasse mit Tensorflow zu finden
Ich habe versucht, mit dem Seq2Seq-Modell von TensorFlow so etwas wie einen Chatbot zu erstellen
Ich habe versucht, das Update von "Werde ein Romanautor" mit "IFTTT" und "Werde ein Romanautor API" zu benachrichtigen.
Ich habe versucht, das Artikel-Update des Livedoor-Blogs mit Python und Selen zu automatisieren.
[Python] Ich habe versucht, automatisch einen täglichen Bericht über YWT mit Outlook-Mail zu erstellen
Bildverarbeitung mit Python (ich habe versucht, es in 0 und 1 Mosaikkunst zu binarisieren)
Ich habe versucht, die Verarbeitungsgeschwindigkeit mit dplyr von R und pandas von Python zu vergleichen
Beim 15. Offline-Echtzeitversuch habe ich versucht, das Problem des Schreibens mit Python zu lösen
Ich habe versucht, mit Quantx eine Linie mit gleitendem Durchschnitt des Volumens zu implementieren
Ich habe versucht, Überlebende der Titanic mit Kaggle vorherzusagen und einzureichen
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Ich habe versucht, zum Zeitpunkt der Bereitstellung mit Fabric und ChatWork Api automatisch in ChatWork zu posten
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
Ich habe versucht, das Problem von F02 zu lösen, wie man mit Python offline in Echtzeit schreibt
Ich habe ein Paket erstellt, um Zeitreihen mit Python zu filtern
Diagrammzeichnungsmethode mit matplotlib
Ich habe versucht, das Problem der Kombinationsoptimierung mit Qiskit zu lösen
Ich habe einen Server mit Python-Socket und SSL erstellt und versucht, über den Browser darauf zuzugreifen
Ich habe versucht, mit Hy ・ Define a class zu beginnen
Ich habe auch versucht, die Funktionsmonade und die Zustandsmonade mit dem Generator in Python nachzuahmen
Ich habe versucht, die Benutzeroberfläche neben Python und Tkinter dreiäugig zu gestalten
Ich schrieb einen Test in "Ich habe versucht, die Wahrscheinlichkeit eines Bingospiels mit Python zu simulieren".
Ich habe versucht, die Wahrscheinlichkeit eines Bingospiels mit Python zu simulieren
Ich habe versucht, in einem tief erlernten Sprachmodell zu schreiben
Wie man zeichnet, indem man die Farbe des Diagramms kontinuierlich mit matplotlib ändert und einfach viele Legenden anordnet
Wenn ich mit matplotlib eine große Anzahl von Diagrammen generiere, möchte ich das Diagramm nicht auf dem Bildschirm anzeigen (Jupyter-Umgebung).
Ich habe versucht, den Sesam für Eingang 2 mit einem einzigen Druck auf die AWS IoT-Taste zu entsperren
Ich möchte mit matplotlib ein Diagramm mit Wellenlinien in der Mitte erstellen (ich möchte den Eindruck manipulieren).
[Python] Ich habe versucht, das Preisgeld von "ONE PIECE" über 100 Millionen Zeichen mit matplotlib zu visualisieren.
Ich habe versucht, die Anzahl der im Inland infizierten Menschen der neuen Korona mit einem mathematischen Modell vorherzusagen
[Einführung in Data Scientist] Grundlagen der wissenschaftlichen Berechnung, Datenverarbeitung und Verwendung der Grafikzeichnungsbibliothek ♬ Grundlagen von Matplotlib
Ich habe versucht, ein Protein-Protein-Interaktionsnetzwerk in einen zweispurigen Raum mit Poincarē-Einbettung von Gensim einzubetten