Ho un array con valori e voglio creare un istogramma di esso. Sono principalmente interessato ai numeri di fascia bassa e voglio raccogliere ogni numero sopra 300 in un cestino. Questo cestino dovrebbe avere la stessa larghezza di tutti gli altri (ugualmente ampi) contenitori. Come posso fare questo?Istogramma Matplotlib con raccoglitore di raccolta per valori elevati
Nota: questa domanda è legata a questa domanda: Defining bin width/x-axis scale in Matplotlib histogram
Questo è quello che ho provato finora:
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()
Questo è il risultato, che non sembra bello:
Poi ho cambiato la riga con xlim:
plt.xlim([0, 325])
Con il seguente risultato:
Sembra più o meno come lo voglio, ma l'ultimo bidone non è visibile oggi. Quale trucco mi manca per visualizzare questo ultimo cestino con una larghezza di 25?
Questo è un hack sporco, ma funziona! Accetto questa risposta finché non arriva una risposta migliore. – physicalattraction