[PYTHON] Histogramm mit Matplotlib

Ich habe ein Histogramm aus den Aufzeichnungen von 5 Probanden und den Gesamtpunkten der Scheinprüfung mit matplotlib erstellt. ・ Matplotlib ・ Histogramm (plt.hist) ・ Diagrammausgabe mit for-Anweisung -Farbcodierung für die Balken im Histogramm mit Patches

Testhistogramm üben

・ Ziele sind Landessprache, Mathematik, Englisch, Gesellschaft, Naturwissenschaften, Gesamtpunktzahl.

・ 100 Punkte für Japanisch, Mathematik, Englisch, Gesellschaft und Naturwissenschaften

・ Csv https://drive.google.com/file/d/1EzctLYN5-UvkmkOgZ7usPgtsQn7bdq5y/view?usp=sharing

・ Die Gesamtpunktzahl beträgt 500 Punkte. 20200916000204.png


Laden Sie die Bibliothek


import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

Erstellen Sie einen Datenrahmen. Geben Sie den Namen in der 1. bis 6. Spalte an. (Wenn sich csv im selben Verzeichnis wie .ipynb von Python befindet, können Sie "~~~ .csv" verwenden.)

df = pd.read_csv("honmachi.csv", names=['Landessprache','Mathematik','Englisch','Gesellschaft','Wissenschaft','gesamt'])

Überprüfen Sie den Speicherstatus. (Sie können jetzt die erste Zeile sehen.)

df.head()

20200916000914.png

Ich werde diese Zeit nicht analysieren, aber beschreiben () wird Ihnen ein Gesamtbild geben.

df.describe()

20200916001311.png

Bitten Sie ** matplotlib **, standardmäßig ein Histogramm von df ['Landessprache'] zu schreiben.

plt.hist(df['Landessprache'])
plt.title('Landessprache')
plt.xlabel('Ergebnis')
plt.ylabel('Anzahl der Personen')
plt.show()

20200916002301.png

Die Standardeinstellung ist subtil. Aufgrund der Art der Testergebnisse ・ Bereich von 0 bis 100 Punkten ** Bereich = (0, 100) ** ・ 10 Sticks ** Behälter = 10 ** Ist es leicht zu sehen?

Ordnen Sie also den Bereich und die Bins in () von hist in ** matplotlib ** an.

# hist()Hinzufügen
plt.hist(df['Landessprache'], range=(0,100), bins=10,)
plt.title('Landessprache')
plt.xlabel('Ergebnis')
plt.ylabel('Anzahl der Personen')
plt.show()

20200916003812.png

Als nächstes kommt die Achse. ・ X-Achse Da es 0 bis 100 ist, ** plt.xlim (0, 100) ** ・ Y-Achse Es ist schwer mit der Höhe zu vergleichen, die je nach Motiv schwankt. Diesmal ist es für 15 Personen, also werden vorerst 8 Personen ** plt.ylim (0,8) ** sein. Wenn Sie hier angeben, können Sie hier anpassen, auch wenn Sie mehr als 8 Personen haben.

plt.hist(df['Landessprache'], range=(0,100), bins=10,)
#Hier hinzufügen
plt.xlim(0,100)
plt.ylim(0,8)
plt.title('Landessprache')
plt.xlabel('Ergebnis')
plt.ylabel('Anzahl der Personen')
plt.show()

20200916005618.png

Der Prototyp sieht so aus.


Passen Sie das Design etwas feiner an. ** 1. Ich möchte, dass eine Gitterlinie die Skala liest ** ** 2. Versuchen Sie, die Farbe mit weniger als der Hälfte der Punktzahl zu ändern **


  1. Zeichnen Sie eine horizontale Linie auf die Anzahl der Personen. plt.grid(True)
plt.hist(df['Landessprache'], range=(0,100), bins=10)
plt.xlim(0,100)
plt.ylim(0,8)
#hinzufügen
plt.grid(True)
plt.title('Landessprache')
plt.xlabel('Ergebnis')
plt.ylabel('Anzahl der Personen')
plt.show()

20200916011819.png

** 2. Ändern Sie die Farbe mit weniger als der Hälfte der Punktzahl. ** ** ** Ich hatte es schwer. In plt.hist () if (49 Punkte oder weniger):   range=(0,50), bins=5 sonst (50 Punkte oder mehr):   range=(51,100), bins=5 Obwohl ich über Farbcodierung nachdenke, scheint es schwierig.

Ist es möglich, jedes Subjekt im Datenrahmen in 50 Punkte oder weniger und 50 Punkte oder mehr jedes Mal neu zu unterteilen?

Aufgrund der Art dieser Zeit wächst jedoch eine ordentlich fixierte Rute. Kann ich die Rute also ** farblich kennzeichnen **? Mit anderen Worten, ich möchte den 1. bis 5. Balken für ** Balken rot machen. ** ** ** Hier habe ich den Rückgabewert in hist verwendet.

Referenz n, bins, patches = hist(○○)
n: Wertdaten der Y-Achse Bins: X-Achsen-Wertdaten Patches: Liste der Patches (Patch = ** Objekte für jeden Balken im Histogramm **)

Ich möchte den 1. bis 5. dieses ** Patches ** farblich kennzeichnen.

#Stellen Sie für den ersten Patch (Balken) Rot auf Gesichtsfarbe.
patches[0].set_facecolor('red')

Ich habe die for-Anweisung verwendet, weil ich dies vom 1. bis zum 5. wiederholen kann.

for i in range(0, 5):
    patches[i].set_facecolor('red')

Nachdem die Vorbereitung für die Farbcodierung abgeschlossen ist, fügen Sie diese zur Anweisung hinzu.

plt.hist(df['Landessprache'], range=(0,100), bins=10)
plt.xlim(0,100)
plt.ylim(0,8)
plt.grid(True)
plt.title('Landessprache')
plt.xlabel('Ergebnis')
plt.ylabel('Anzahl der Personen')
#Nachtrag
for i in range(0, 5):
    patches[i].set_facecolor('red')
plt.show()

20200916020839.png

Es wird angezeigt, wenn keine Patches definiert sind. Muss ich irgendwo ** Pfade ** setzen? Leihen Sie sich den vorherigen aus ** n, Bins, Patches = hist () ** und es hat funktioniert.

#Hier hinzufügen
n, bins, patches = plt.hist(df['Landessprache'], range=(0,100), bins=10)
plt.xlim(0,100)
plt.ylim(0,8)
plt.grid(True)
plt.title('Landessprache')
plt.xlabel('Ergebnis')
plt.ylabel('Anzahl der Personen')
for i in range(0, 5):
    patches[i].set_facecolor('red')
plt.show()

20200916021239.png

Komplett.

Blutrot hat auch Pech, also passen Sie die Transparenz (Alpha) an. ** Alpha = 0,5 ** Dies ist zusätzlich in hist () angeordnet.

# hist()Alpha wird ebenfalls hinzugefügt
n, bins, patches = plt.hist(df['Landessprache'], range=(0,100), bins=10, alpha=0.5)
plt.xlim(0,100)
plt.ylim(0,8)
plt.grid(True)
plt.title('Landessprache')
plt.xlabel('Ergebnis')
plt.ylabel('Anzahl der Personen')
for i in range(0, 5):
    patches[i].set_facecolor('red')
plt.show()

20200916022138.png


Verwenden Sie danach die for-Anweisung, um alles auf einmal zu drehen.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("honmachi.csv", names=['Landessprache','Mathematik','Englisch','Gesellschaft','Wissenschaft','gesamt'])
#Legen Sie eine Variable namens Betreff fest und verarbeiten Sie jeweils einen Betreff.
for subject in ['Landessprache','Mathematik','Englisch','Gesellschaft','Wissenschaft']:
# df[ ]Der Inhalt wird je nach Thema geändert.
    n, bins, patches = plt.hist(df[subject], range=(0,100), bins=10, alpha=0.5)
    plt.xlim(0,100)
    plt.ylim(0,8)
    plt.grid(True)
#title( )Wenn der Inhalt ebenfalls Gegenstand ist, ändert sich die Titelbezeichnung automatisch.
    plt.title(subject)
    plt.xlabel('Ergebnis')
    plt.ylabel('Anzahl der Personen')
    for i in range(0, 5):
        patches[i].set_facecolor('red')
    plt.show()

20200916024212.png

Damit kamen 5 Blätter gleichzeitig heraus.

Der Rest ist die Gesamtpunktzahl. Geben Sie einfach eine perfekte Punktzahl von 500. Erfassen Sie die Gesamtzahl der Datenrahmen Range ** Bereich = (0,500) ** ・ ** plt.xlim (0,500) ** Wechseln Sie zu und Sie sind fertig.

Abschließend werde ich den in dieser Anforderung verwendeten Code kommentarlos zusammenstellen.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("honmachi.csv", names=['Landessprache','Mathematik','Englisch','Gesellschaft','Wissenschaft','gesamt'])

for subject in ['Landessprache','Mathematik','Englisch','Gesellschaft','Wissenschaft']:
    n, bins, patches = plt.hist(df[subject], range=(0,100), bins=10, alpha=0.5)
    plt.xlim(0,100)
    plt.ylim(0,8)
    plt.grid(True)
    plt.title(subject)
    plt.xlabel('Ergebnis')
    plt.ylabel('Anzahl der Personen')
    for i in range(0, 5):
        patches[i].set_facecolor('red')
    plt.show()

n, bins, patches = plt.hist(df['gesamt'], range=(0,500), bins=10, alpha=0.5)
plt.xlim(0,500)
plt.ylim(0,8)
plt.grid(True)
plt.title('gesamt')
plt.xlabel('Ergebnis')
plt.ylabel('Anzahl der Personen')
for i in range(0, 5):
    patches[i].set_facecolor('red')
plt.show()

Wenn Sie nur von Python ausgeben, scheint dies kein Problem zu sein, aber wenn Sie es realistisch verwenden, denke ich, dass es kein endgültiger Implementierungsmechanismus sein kann, der im Netzwerk funktioniert, um es universell zu machen. Ich tat.

Recommended Posts

Histogramm mit Matplotlib
Animation mit matplotlib
Japanisch mit Matplotlib
Animation mit matplotlib
Erstellen Sie eine Animation mit matplotlib
Schreiben Sie ein gestapeltes Histogramm mit matplotlib
2-Achsen-Plot mit Matplotlib
Heatmap von Python + matplotlib
Banddiagramm mit Matplotlib
Lernen Sie mit Chemo Informatics Matplotlib
Echtzeitzeichnung mit Matplotlib
Verschiedene Farbleisten mit Matplotlib
3D-Plot mit Matplotlib
Stellen Sie die Achsen mit matplotlib ein
Pandas-Grundlagen für Anfänger ③ Erstellen Sie ein Histogramm mit matplotlib
Zeichnen Sie Excel-Daten mit matplotlib (1)
Versuchen Sie es mit matplotlib mit PyCharm
Diagrammzeichnungsmethode mit matplotlib
Zeichnen Sie Excel-Daten mit matplotlib (2)
Transparente Überlagerung des Histogramms durch Matplotlib
Stapelbares Barplot mit Matplotlib
[Python] So erstellen Sie mit Matplotlib ein zweidimensionales Histogramm
Auszug aus Parametern für das Matplotlib-Histogramm
Wählen Sie mit matplotlib abgestufte Farben aus
Animieren Sie mehrere Diagramme mit matplotlib
Inferenz- und Ergebnisanzeige mit Tensorflow + matplotlib
Japanisieren Sie Matplotlib mit Alpine mit Docker
Fügen Sie dem Matplotlib-Histogramm ein kumulatives Verhältnis hinzu
Zeichne Japanisch mit matplotlib auf Ubuntu
Zeichnen Sie mit matplotlib ein loses Diagramm
Heatmap mit Dendrogramm in Python + Matplotlib
Einfache japanische Schrifteinstellung mit matplotlib
Trennlinie im Matplotlib-Histogramm anzeigen
Zeichnen Sie einfach Diagramme mit matplotlib
Kontinuierliche Farbe mit Matplotlib-Streudiagramm
Zeichne Riapnov Fractal mit Python, matplotlib
Wenn matplotlib nicht mit python2.7 funktioniert
Führen Sie mit Python, matplotlib, einen logarithmischen Normalwahrscheinlichkeitsplot durch
Einfache Animation mit matplotlib (mp4, gif)
Implementieren Sie "Data Visualization Design # 2" mit matplotlib
Matplotlib Memorandum
[Python] Legen Sie den Diagrammbereich mit matplotlib fest
Passen Sie den Abstand zwischen den Figuren mit Matplotlib an
Richten Sie die Größe der Farbleiste an der Matplotlib aus
Stellen Sie die Behälterbreite mit dem Histogramm von Matplotlib und Seaborn klar und ordentlich ein
Matplotlib Galerie
Versuchen Sie, mit matplotlib eine Normalverteilung zu zeichnen
Matplotlib-Memo
Schreiben Sie SVG-Diagramme mit Matplotlib mit Heroku
Japanisches Diagramm mit VS Code + matplotlib anzeigen
Heat Map für die Rastersuche mit Matplotlib
Zeichnen Sie eine hierarchische Achsenbeschriftung mit matplotlib + pandas
[Python] Lassen Sie uns matplotlib mit Japanisch kompatibel machen
Zeichnen Sie Dreiecksfunktionen mit Numpy und Matplotlib
matplotlib Zusammenfassung
Zeigen Sie Markierungen über dem Rand mit matplotlib an
Richten Sie die Farbleiste mit matplotlib an der Figur aus
[Jupyter Notebook Memo] Kanji mit Matplotlib anzeigen
Zeichnen Sie mit matplotlib ein schönes Kreisdiagramm
Nehmen Sie allgemeine Einstellungen mit der Unterzeichnung von matplotlib vor