Die Methode zum Zeichnen eines zweidimensionalen Histogramms mit Python ist unter Verwendung von Matplotlib oder OpenCV bekannt.
Beachten Sie in diesem Artikel beim Erstellen eines 2D-Histogramms mit Matplotlib, wie Sie das Histogramm als 2D-Array in eine Textdatei exportieren.
Der Artikel von @ Supersaiakujin wird empfohlen, um mit Matplotlib ein zweidimensionales Histogramm zu erstellen.
[Python] Erstellen eines zweidimensionalen Histogramms mit Matplotlib
Der Umriss besteht darin, ein zweidimensionales Histogramm zu erstellen, indem zwei Numpy-Arrays, die die Originaldaten sind, an die Funktion "hist2d" der Bibliothek "Matplotlib" übergeben werden.
Es ist zu beachten, dass für die beiden Numpy-Arrays, die die Originaldaten sind, "ein Array mit nur x-Koordinaten" und "ein Array mit nur y-Koordinaten" erstellt werden muss.
Ein solches zweidimensionales Histogramm kann mit dem folgenden Beispielprogramm geschrieben werden.
hist2d
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
#Originale Daten
x = (1.1,1.1,3.2,3.1,1.1,2.1,1.1)
y = (-1.1,-2.1,-2.1,-2.1,-3.1,-2.1,-2.1)
#Vorbereitung zum Zeichnen
fig = plt.figure()
ax = fig.add_subplot(111)
#Erstellen Sie das Histogramm hist2d(Array,Array,Zeichnungsbereich angeben(Untergrenze, Obergrenze, Anzahl der Abteilungen),Farbbalken-Farbspezifikation)
H = ax.hist2d(x,y, bins=[np.linspace(-5,5,10),np.linspace(-5,5,10)], cmap=cm.jet)
ax.set_title('1st graph')
ax.set_xlabel('x')
ax.set_ylabel('y')
fig.colorbar(H[3],ax=ax)
plt.show()
Die Speicherfunktion von numpy ist praktisch, um die Werte des zweidimensionalen Histogramms als Array in eine Textdatei oder CSV zu schreiben.
savetxt
#Erstellen Sie das Histogramm hist2d(Array,Array,Zeichnungsbereich angeben(Untergrenze, Obergrenze, Anzahl der Abteilungen),Farbbalken-Farbspezifikation)
H = ax.hist2d(x,y, bins=[np.linspace(-5,5,10),np.linspace(-5,5,10)], cmap=cm.jet)
np.savetxt("2Dhist-array.txt", H[0], fmt = "%s")
Wenn Sie den Rückgabewert von hist2d im offiziellen Matplotlib-Handbuch überprüfen, können Sie sehen, dass der erste Rückgabewert der Wert des Histogramms ist. Daher wird H [0] herausgenommen.
fmt = "% s" ist ein Zeichenfolgenformat.
hist2d | |
---|---|
H[0] | Der Wert des Histogramms(Ein zweidimensionales Array) |
H[1] | x-Achsen-Teilungswert (eindimensionales Array) |
H[2] | Teilungswert der Y-Achse (eindimensionales Array) |
H[3] | Farbbalkeninformationen(QuadMesh) |
#Erstellen Sie das Histogramm hist2d(Array,Array,Zeichnungsbereich angeben(Untergrenze, Obergrenze, Anzahl der Abteilungen),Farbbalken-Farbspezifikation)
H = ax.hist2d(x,y, bins=[np.linspace(-5,5,10),np.linspace(-5,5,10)], cmap=cm.jet)
print(H[0])
>>>[[0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 1. 2. 1. 0. 0. 0. 0. 0.]
[0. 0. 1. 0. 0. 0. 0. 0. 0.]
[0. 0. 2. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0.]]
Soweit das Ausgabearray zu sehen ist, wird entlang der y-Achse ein eindimensionales Array erzeugt.
Ich habe diesen Code zusammengestellt.
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
#Originale Daten
x = (1.1,1.1,3.2,3.1,1.1,2.1,1.1)
y = (-1.1,-2.1,-2.1,-2.1,-3.1,-2.1,-2.1)
#Vorbereitung zum Zeichnen
fig = plt.figure()
ax = fig.add_subplot(111)
#Erstellen Sie das Histogramm hist2d(Array,Array,Zeichnungsbereich angeben,Farbbalken-Farbspezifikation)
H = ax.hist2d(x,y, bins=[np.linspace(-5,5,10),np.linspace(-5,5,10)], cmap=cm.jet)
ax.set_title('1st graph')
ax.set_xlabel('x')
ax.set_ylabel('y')
fig.colorbar(H[3],ax=ax)
plt.show()
#Exportieren Sie ein 2D-Histogramm in eine Textdatei
np.savetxt("2Dhist-array.txt", H[0], fmt = "%s")
Recommended Posts