[Python] Wie zeichnet man mit Matplotlib ein Histogramm?

Verwenden Sie hist, um ein Histogramm mit matplotlib zu schreiben. Einige Beispiele sind unten gezeigt.

Einfaches Histogramm

Geben Sie als hist an (Daten, Bins = Anzahl der Bins). Verwenden Sie für Titel und Beschriftung wie gewohnt set_title, set_xlabel und set_ylabel.

import numpy as np
import matplotlib.pyplot as plt

mu, sigma = 100, 15
x = mu + sigma * np.random.randn(10000)

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

ax.hist(x, bins=50)
ax.set_title('first histogram $\mu=100,\ \sigma=15$')
ax.set_xlabel('x')
ax.set_ylabel('freq')
fig.show()

histogram2D_01.png

Ein Beispiel, in dem die Anzahl der Fächer 10 beträgt (Fächer = 10). histogram2D_02.png

Normalisieren Sie das Histogramm

Wenn normiert = Wahr, wird das Histogramm normalisiert. Zu diesem Zeitpunkt beträgt die Gesamtfrequenz jedes Fachs 1,0.

import numpy as np
import matplotlib.pyplot as plt

mu, sigma = 100, 15
x = mu + sigma * np.random.randn(10000)

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

ax.hist(x, bins=50, normed=True)
ax.set_title('third histogram $\mu=100,\ \sigma=15$')
ax.set_xlabel('x')
ax.set_ylabel('freq')
fig.show()

histogram2D_03.png

Befestigen Sie die vertikale Achse

Beim Vergleichen von Histogrammen kann es zweckmäßig sein, die vertikale Achse zu fixieren. In diesem Fall sollte set_ylim (min, max) verwendet werden, um die vertikale Achse zu fixieren. Wenn set_ylim nicht verwendet wird, wird die vertikale Achse so angepasst, dass das Histogramm genau entsprechend der Häufigkeit der Daten gezeichnet wird.

import numpy as np
import matplotlib.pyplot as plt

mu, sigma = 100, 15
x = mu + sigma * np.random.randn(10000)

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

ax.hist(x, bins=50, normed=True)
ax.set_title('fourth histogram $\mu=100,\ \sigma=15$')
ax.set_xlabel('x')
ax.set_ylabel('freq')
ax.set_ylim(0,0.1)
fig.show()

histogram2D_04.png

Zeichnen Sie zwei Histogramme in einem Diagramm

Rufen Sie einfach zweimal hist an.

import numpy as np
import matplotlib.pyplot as plt

mu1, sigma1 = 100, 15
mu2, sigma2 = 70, 6
x1 = mu1 + sigma1 * np.random.randn(10000)
x2 = mu2 + sigma2 * np.random.randn(10000)

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

ax.hist(x1, bins=50, normed=True, color='red')
ax.hist(x2, bins=50, normed=True, color='blue')
ax.set_title('fifth histogram $\mu1=100,\ \sigma1=15,\ \mu2=50,\ \sigma2=4$')
ax.set_xlabel('x')
ax.set_ylabel('freq')
ax.set_ylim(0,0.1)
fig.show()

histogram2D_05.png

Machen Sie den Graphen durchscheinend

Wenn mehrere Histogramme in ein Diagramm geschrieben werden, wird der überlappende Teil ausgeblendet. Wenn Sie das Diagramm zu diesem Zeitpunkt halbtransparent machen, ist es zu diesem Zeitpunkt etwas einfacher zu sehen. Um es halbtransparent zu machen, setzen Sie Alpha = 0,5 als Parameter. Wenn zu diesem Zeitpunkt der Wert auf Alpha = 1,0 eingestellt ist, wird das Diagramm undurchsichtig und entspricht dem Wert, in dem Alpha nicht angegeben ist. Wenn Alpha = 0,0 ist, wird das Diagramm transparent und vollständig unsichtbar.

import numpy as np
import matplotlib.pyplot as plt

mu1, sigma1 = 100, 15
mu2, sigma2 = 70, 6
x1 = mu1 + sigma1 * np.random.randn(10000)
x2 = mu2 + sigma2 * np.random.randn(10000)

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

ax.hist(x1, bins=50, normed=True, color='red', alpha=0.5)
ax.hist(x2, bins=50, normed=True, color='blue',alpha=0.5)
ax.set_title('sixth histogram $\mu1=100,\ \sigma1=15,\ \mu2=50,\ \sigma2=4$')
ax.set_xlabel('x')
ax.set_ylabel('freq')
ax.set_ylim(0,0.1)
fig.show()

histogram2D_06.png

Wenn Sie die Histogramme nebeneinander anordnen möchten

Wenn Sie mehrere Histogramme in einem einzelnen Diagramm zeichnen, können Sie die Balken zum einfachen Vergleich nebeneinander in Bin-Einheiten anordnen. In diesem Fall machen Sie die Daten zu einer Liste wie [x1, x2, x3] und machen Sie sie wie hist ([x1, x2, x3]). Machen Sie die Farbe und beschriften Sie auch eine Liste.

import numpy as np
import matplotlib.pyplot as plt

mu1, sigma1 = 100, 15
mu2, sigma2 = 90, 20
mu3, sigma3 = 110, 10
x1 = mu1 + sigma1 * np.random.randn(10000)
x2 = mu2 + sigma2 * np.random.randn(10000)
x3 = mu3 + sigma3 * np.random.randn(10000)

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

ax.hist([x1, x2, x3], bins=10, normed=True, color=['red', 'blue', 'green'], label=['x1', 'x2', 'x3'])
ax.set_title('seventh histogram $\mu1=100,\ \sigma1=15,\ \mu2=50,\ \sigma2=4$')
ax.set_xlabel('x')
ax.set_ylabel('freq')
ax.legend(loc='upper left')
fig.show()

histogram2D_07.png

Wenn Sie die Histogramme vertikal stapeln möchten

Wenn Sie mehrere Histogramme in einem Diagramm zeichnen, möchten Sie möglicherweise Balken vertikal stapeln, wenn Sie die Gesamtzahl von drei vergleichen möchten. In diesem Fall sollten die Daten wie im horizontalen Fall hist ([x1, x2, x3]) sein und der Parameter sollte gestapelt sein = True.

import numpy as np
import matplotlib.pyplot as plt

mu1, sigma1 = 100, 15
mu2, sigma2 = 90, 20
mu3, sigma3 = 110, 10
x1 = mu1 + sigma1 * np.random.randn(10000)
x2 = mu2 + sigma2 * np.random.randn(10000)
x3 = mu3 + sigma3 * np.random.randn(10000)

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

ax.hist([x1, x2, x3], bins=10, normed=True, color=['red', 'blue', 'green'], label=['x1', 'x2', 'x3'], histtype='bar', stacked=True)
ax.set_title('eighth histogram $\mu1=100,\ \sigma1=15,\ \mu2=50,\ \sigma2=4$')
ax.set_xlabel('x')
ax.set_ylabel('freq')
ax.legend(loc='upper left')
fig.show()

histogram2D_08.png

Wenn Sie den Behälterabstand selbst festlegen möchten

Wenn Sie die Anzahl der Fächer angeben, wird der Behälterabstand automatisch anhand der Maximal- und Minimalwerte der Daten ermittelt. Es gibt Zeiten, in denen Sie den Behälterabstand selbst bestimmen möchten, ohne von den Daten abhängig zu sein, z. B. wenn Sie ein Histogramm innerhalb des Bereichs erstellen möchten, in dem die Daten aufgenommen werden können. Erstellen Sie in diesem Fall eine Liste der Bin-Kanten und geben Sie im Parameter Bins = Kanten an. Die Kante eines Fachs bezieht sich auf den unteren Grenzwert oder den oberen Grenzwert des Fachs. Wenn beispielsweise die Anzahl der Behälter 10 beträgt, beträgt die Anzahl der Kanten 11.

import numpy as np
import matplotlib.pyplot as plt

mu, sigma = 100, 15
x = mu + sigma * np.random.randn(10000)

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
edges = range(0,160,10)
n, bins, patches = ax.hist(x, bins=edges)
ax.set_title('ninth histogram $\mu=100,\ \sigma=15$')
ax.set_xlabel('x')
ax.set_ylabel('freq')
fig.show()

histogram2D_09.png

Wenn Sie die Daten des Histogramms erhalten möchten

Wenn Sie das Diagramm zeichnen und gleichzeitig die Frequenzdaten des Histogramms erfassen möchten, Erhalten Sie Frequenzdaten mit dem Rückgabewert von hist wie "n, bins, pathces = ax.hist (x, ...)".

Was sind die Rückgabe-Patches?

Die Patches sind eine Liste und der Inhalt sind Objekte für jeden Behälter des gezeichneten Histogramms. Wenn Sie die Eigenschaft des Objekts im Bin des Histogramms ändern, können Sie nur die Farbe dieses Teils ändern.

import numpy as np
import matplotlib.pyplot as plt

mu, sigma = 100, 15
x = mu + sigma * np.random.randn(10000)

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
edges = range(0,160,10)
n, bins, patches = ax.hist(x, bins=edges)
ax.set_title('tenth histogram $\mu=100,\ \sigma=15$')
ax.set_xlabel('x')
ax.set_ylabel('freq')
patches[9].set_facecolor('red')
patches[10].set_facecolor('green')
fig.show()

histogram2D_10.png

Recommended Posts

[Python] Wie zeichnet man mit Matplotlib ein Histogramm?
[Python] Wie zeichnet man mit Matplotlib ein Liniendiagramm?
[Python] So erstellen Sie mit Matplotlib ein zweidimensionales Histogramm
[Python] Wie zeichnet man mit Matplotlib ein Streudiagramm?
Wie bekomme ich Stacktrace in Python?
Einbetten von Variablen in Python-Strings
So erstellen Sie eine JSON-Datei in Python
[Python] Zeichnen mehrerer Diagramme mit Matplotlib
So benachrichtigen Sie Discord-Kanäle in Python
Wie man in Python entwickelt
Zeichne ein Herz in Python
So konvertieren / wiederherstellen Sie einen String mit [] in Python
[Python] So erweitern Sie Variablen in einer Zeichenfolge
So führen Sie einen Befehl mit einem Unterprozess in Python aus
[Python] Wie man PCA mit Python macht
So sammeln Sie Bilder in Python
Zeichnen Sie eine Streudiagrammmatrix mit Python
Verwendung von SQLite in Python
Wie man MySQL mit Python benutzt
Verwendung von ChemSpider in Python
Zeichnen Sie ein CNN-Diagramm in Python
Umgang mit Japanisch mit Python
So schneiden Sie ein Block-Multiple-Array aus einem Multiple-Array in Python
Eine Geschichte darüber, wie man einen relativen Pfad in Python angibt.
Verwendung der Methode __call__ in der Python-Klasse
So importieren Sie Dateien in Python an eine beliebige Stelle
So definieren Sie mehrere Variablen in einer Python for-Anweisung
Ich habe versucht "Wie man eine Methode in Python dekoriert"
So entwickeln Sie in einer virtuellen Python-Umgebung [Memo]
So erhalten Sie den letzten (letzten) Wert in einer Liste in Python
So erhalten Sie eine Liste der integrierten Ausnahmen für Python
[Einführung in Python] Wie verwende ich eine Klasse in Python?
So unterdrücken Sie Anzeigefehler in matplotlib
Dynamisches Definieren von Variablen in Python
[Python] Wie man eine Klasse iterierbar macht
[Python] So konvertieren Sie eine zweidimensionale Liste in eine eindimensionale Liste
[Itertools.permutations] So löschen Sie eine Sequenz in Python
So arbeiten Sie mit BigQuery in Python
Mit Python Teil 2 ein Herz zeichnen (SymPy Edition)
[Python] So invertieren Sie eine Zeichenfolge
So extrahieren Sie einen Polygonbereich in Python
So überprüfen Sie die Version von opencv mit Python
So passen Sie den Bildkontrast in Python an
So füllen Sie mit Python dynamisch Nullen aus
Zeichnen Sie mit graphviz eine Baumstruktur in Python 3
Verwendung regulärer Ausdrücke in Python
So zeigen Sie Hello World in Python an
Verwendung ist und == in Python
Wie schreibe ich Ruby to_s in Python
So führen Sie Maya Python-Skripte aus
So zeichnen Sie ein OpenCV-Bild mit Pygame
So bestimmen Sie die Existenz eines Selenelements in Python
Übergeben von Argumenten an Python-Skripte in SPSS Modeler Batch
So machen Sie einen String in Python zu einem Array oder ein Array zu einem String
[Einführung in Python] So geben Sie eine Zeichenfolge in einer Print-Anweisung aus
So überprüfen Sie die Speichergröße einer Variablen in Python
So erhalten Sie eine Zeichenfolge aus einem Befehlszeilenargument in Python
[Einführung in Python] Wie verwende ich den Operator in in der for-Anweisung?