2016-03-31 13 views
1

I ein Balkendiagramm haben, unter Verwendung von Python matplotlib gezogen:Python matplotlib Balkenbreite ist nicht steuerbar

import matplotlib.pyplot as plt 
unique=[200] 
index = [0] 
counts = [7] 
alpha=0.4 
bar_width=0.1 
color='b' 
plt.bar(index, counts, bar_width, alpha=alpha, color=color) 
# set x and y labels 
plt.xlabel('Status') 
plt.ylabel('Counts') 
# set title and plot 
plt.title('Status Counts') 
plt.xticks(index + bar_width/2, unique) 
plt.show() 

Jedesmal, wenn es nur eine Bar ist gezeichnet wird, sie die Hälfte des Diagramms auffüllt, wie unten gezeigt:

enter image description here

Wie behebt man das? Ich habe versucht, die bar_width ohne Glück zu variieren.

+0

Können Sie auch einige Beispiele umfassen Daten? Von daher ist es sehr schwer zu sagen, was ohne die Eingaben vor sich geht. – tacaswell

+0

Aktualisiert die Frage mit Daten – ssk

+1

Dies ist die automatische Skalierung nicht-intuitiven Dinge. Verwenden Sie 'ax.set_xlim' und' ax.set_ylim', um sie so zu setzen, wie Sie möchten. – tacaswell

Antwort

1

Es funktioniert nicht, weil Sie es nur einen Datenpunkt geben, so dass die Breite wirklich keine Rolle spielt, da es den ganzen Balken plus ein wenig Platz um es herum zeigt, egal was Sie die Breite einstellen. Für ein minimales Beispiel habe ich die Nebenkosten weggelassen.

Vergleichen Sie die folgenden zwei Beispiele, um zu sehen, dass die Bar-Breite funktioniert:

import matplotlib.pyplot as plt 
index = [0,1,2,3,4,5,6] 
counts = [7,7,19,2,3,0,1] 

bar_width=0.1 
plt.bar(index, counts, bar_width) 
plt.show() 

enter image description here

gegen

import matplotlib.pyplot as plt 
index = [0 ] 
counts = [7 ] 

bar_width=0.1 
plt.bar(index, counts, bar_width) 
plt.show() 

enter image description here