2017-07-21 1 views
1

Ich habe ein Histogramm, in dem ich die X-Achse nach Bins beschriften möchte. Das Histogramm wird als logarithmischer Logarithmus dargestellt, die Bins sind jedoch sehr spezifisch. Der Graph:Label-Histogramm nach Bins matplotlib

The Graph

Die Behälter:

bins = [0, 0.035, 0.07, 0.15, 0.5, 1, 3, 10, 40] 

Gibt es eine Möglichkeit, dies zu tun? Ich glaube, es würde auch erforderlich sein, die aktuellen X-Achsen-Etiketten loszuwerden.

+0

Was ist mit 'ax.set_xticks (bins)'? Ich denke auch, es würde besser aussehen, wenn Sie den Parameter 'edgecolor =" k "in Ihrem' plt.hist' hinzugefügt haben. –

Antwort

2

Ich schrieb einen Beispielcode für Sie. Im Grunde genommen war alles, was Sie brauchen, 'set_xticks' und 'set_xticklabels'.

import numpy as np 
import matplotlib.pyplot as plt 

x = [0.01, 0.01, 0.01, 0.04, 0.1, 0.1, 0.4, 0.4, 0.4, 0.4, 0.65, 0.65, 0.65, 2, 7, 7, 7, 7, 7, 7, 7, 7, 18, 18, 18] 
my_bins = [0.001, 0.035, 0.07, 0.15, 0.5, 1, 3, 10, 40] 

ind = np.array(my_bins[:-1]) 
width = np.array([my_bins[i+1]-my_bins[i] for i in range(len(my_bins)-1)]) 

fig, ax = plt.subplots() 

ax.hist(x, bins=my_bins) 
ax.set_xscale('log') 
ax.set_xticks(ind + width/2) 
ax.set_xticklabels(('bin1', 'bin2', 'bin3', 'bin4', 'bin5', 'bin6', 'bin7', 'bin8')) 

plt.show() 
+0

Das hat funktioniert, außer dass meine Etiketten mit den Fächern leicht versetzt sind. :) –

+0

Großartig! Ich denke, Sie können die Xticks anpassen, um Ihre Etiketten auszurichten. Dies kann durch Ändern des Arrays 'ind' und 'width' erfolgen. – yuhow5566

+0

Entschuldigung, wenn ich eine offensichtliche Frage stelle, aber wie würde ich diese Arrays anpassen, damit die Labels leicht nach links gehen? –