2017-05-26 1 views
1

Eine ähnliche Frage aufgeworfen Anzeige zwingen kann ist:Wie Verweise auf die aktuelle Figur zu bekommen und Achsen Objekt so, dass ich Balkendiagramm y-Achse nur ganze Zahlen

how to force matplotlib to display only whole numbers on the Y axis

Ich versuche zu tun genau das gleiche für ein Balkendiagramm. Mein Problem ist, dass das Balkenobjekt nicht in fig, ax auspackt. Hier ist der Code:

import matplotlib.pylab as plt 
x = [0, 0.5, 1, 2, 3, 3.5, 4, 4.5, 5, 7.5, 8.5,9] 
y = [1,2,2,3,1,2,2,2,2,1,1,0] 
width = 0.5 
plt.bar(x, y, width, color="pink") 
plt.xlabel('score') 
plt.ylabel('antall') 
plt.show() 

Und das Balkendiagramm:

A bar graph

Ich mag nur würde auf ganze Zahlen auf der y-Achse und die gegenüber auf der x-Achse angezeigt werden (dh Zahlen 0 bis 10 mit 0,5 Inkrement).

Antwort

1

Sie können fig = plt.gcf() und ax = plt.gca() verwenden, um Verweise auf die aktuellen Figuren und Achsenobjekte zu erhalten.

jedoch mit der matplotlibobject-oriented interface immer gibt Ihnen Zugriff auf fig und ax haben und macht den Code deutlicher die Gestalt und Achsen Sie steuern.

Sie können auch das Modul matplotlib.ticker für mehr Kontrolle über Tick-Standorte verwenden. In diesem Fall wird ein MultipleLocator den Trick machen, die Tickpositionen auf Vielfache von 1 für die yaxis und 0.5 für die xaxis zu setzen.

import matplotlib.pylab as plt 
import matplotlib.ticker as ticker 

x = [0, 0.5, 1, 2, 3, 3.5, 4, 4.5, 5, 7.5, 8.5,9] 
y = [1,2,2,3,1,2,2,2,2,1,1,0] 

fig, ax = plt.subplots(1) 

width = 0.5 
ax.bar(x, y, width, color="pink") 
ax.set_xlabel('score') 
ax.set_ylabel('antall') 

ax.xaxis.set_major_locator(ticker.MultipleLocator(0.5)) 
ax.yaxis.set_major_locator(ticker.MultipleLocator(1)) 

plt.show() 

enter image description here

Verwandte Themen