2012-06-26 13 views
8

Oto przykład wykresu dużych wartości.Automatyczne ustawianie limitów osi Y dla wykresu słupkowego za pomocą matplotlib

import matplotlib.pyplot as plt 
x = [1,2,3,4,5] 
y = [1000, 1002, 1001, 1003, 1005] 
plt.bar(x,y) 
plt.show() 

Oś Y rozpoczyna się od 0, więc wszystkie paski wyglądają na równe. Wiem, że możesz użyć plt.ylim do ręcznego ustawienia limitów, ale czy istnieje sposób, aby macplotlib automatycznie (i elegancko) ustawił granice rozsądnych wartości (np. 998-1008), a także może pokazał podział osi?

Odpowiedz

11

Trochę prostej algebry pomogą ustalić limity:

import matplotlib.pyplot as plt 
import math 
x = [1,2,3,4,5] 
y = [1000, 1002, 1001, 1003, 1005] 
low = min(y) 
high = max(y) 
plt.ylim([math.ceil(low-0.5*(high-low)), math.ceil(high+0.5*(high-low))]) 
plt.bar(x,y) 
plt.show() 

W ten sposób jesteś w stanie zobaczyć różnicę między swoimi wartości y i korzystać z nich, aby ustawić skalę wzdłuż Y- oś. Użyłem math.ceil (w przeciwieństwie do math.floor) w celu uzyskania podanych wartości i zapewnienia liczb całkowitych.

Jeśli chodzi o przerwę w osi, proponuję przejrzeć this example.

+0

Tak, to działa całkiem dobrze. Dzięki. – user1473483

Powiązane problemy