Ich habe ein Array mit Werten, und ich möchte ein Histogramm davon erstellen. Ich bin hauptsächlich an den niedrigen Zahlen interessiert und möchte jede Zahl über 300 in einem Fach sammeln. Dieser Behälter sollte die gleiche Breite wie alle anderen (gleich breiten) Behälter haben. Wie kann ich das machen?Matplotlib Histogramm mit Sammelbehälter für hohe Werte
Hinweis: diese Frage auf diese Frage bezogen werden: Defining bin width/x-axis scale in Matplotlib histogram
Dies ist, was ich bisher versucht:
import matplotlib.pyplot as plt
import numpy as np
def plot_histogram_01():
np.random.seed(1)
values_A = np.random.choice(np.arange(600), size=200, replace=True).tolist()
values_B = np.random.choice(np.arange(600), size=200, replace=True).tolist()
bins = [0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 250, 275, 300, 600]
fig, ax = plt.subplots(figsize=(9, 5))
_, bins, patches = plt.hist([values_A, values_B], normed=1, # normed is deprecated and will be replaced by density
bins=bins,
color=['#3782CC', '#AFD5FA'],
label=['A', 'B'])
xlabels = np.array(bins[1:], dtype='|S4')
xlabels[-1] = '300+'
N_labels = len(xlabels)
plt.xlim([0, 600])
plt.xticks(25 * np.arange(N_labels) + 12.5)
ax.set_xticklabels(xlabels)
plt.yticks([])
plt.title('')
plt.setp(patches, linewidth=0)
plt.legend()
fig.tight_layout()
plt.savefig('my_plot_01.png')
plt.close()
Dies ist das Ergebnis, das nicht schön aussieht:
Ich habe dann die Zeile mit xlim darin geändert:
plt.xlim([0, 325])
Mit folgendem Ergebnis:
Es sieht mehr oder weniger wie ich es will, aber die letzten ist ist jetzt nicht sichtbar. Welchen Trick vermisse ich, um diesen letzten Behälter mit einer Breite von 25 zu visualisieren?
Das ist ein schmutziger Hack, aber es funktioniert! Ich akzeptiere diese Antwort, bis eine bessere Antwort kommt. – physicalattraction