Verwenden Sie hist, um ein Histogramm mit matplotlib zu schreiben. Einige Beispiele sind unten gezeigt.
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()
Ein Beispiel, in dem die Anzahl der Fächer 10 beträgt (Fächer = 10).
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()
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()
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()
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()
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()
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()
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()
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, ...)".
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()
Recommended Posts