2013-04-10 24 views
8

Próbuję wykreślić histogram z wykresem słupkowym i mam problemy z ustaleniem, jak wyrównać etykiety osi X z rzeczywistymi pojemnikami. Poniższy kod generuje następujący wykres: Bar chartmatplotlib: etykiety histogramu i bin

jak widać, koniec każdej etykiety x nie jest wyrównany do środka jego pojemnika. Sposób, w jaki o tym myślę: kiedy zastosuję obrót o 45 stopni, etykieta obraca się wokół jej geometrycznego środka. Zastanawiałem się, czy możliwe jest przesunięcie osi obrotu do góry etykiety. (Lub po prostu przetłumaczyć wszystkie etykiety lekko w lewo.)

import matplotlib.pyplot as plt 
import numpy as np 

#data 
np.random.seed(42) 
data = np.random.rand(5) 
names = ['A:GBC_1233','C:WERT_423','A:LYD_342','B:SFS_23','D:KDE_2342'] 

ax = plt.subplot(111) 
width=0.3 
bins = map(lambda x: x-width/2,range(1,len(data)+1)) 
ax.bar(bins,data,width=width) 
ax.set_xticks(map(lambda x: x, range(1,len(data)+1))) 
ax.set_xticklabels(names,rotation=45) 

plt.show() 

Odpowiedz

9

Zastosowanie:

ax.set_xticklabels(names,rotation=45, rotation_mode="anchor", ha="right") 

Wyjście jest:

enter image description here

+0

genialny, dziękuję! – dimka