2012-06-26 8 views
8

Вот пример графического отображения больших значений.Автоматическая установка границ оси y для гистограммы с использованием matplotlib

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

Ось y начинается с 0, поэтому все бары выглядят одинаково. Я знаю, что вы можете использовать plt.ylim, чтобы вручную установить лимиты, но есть ли способ для matplotlib автоматически (и умно) установить пределы для разумных значений (например, 998-1008), а также, возможно, показать осевой разрыв?

ответ

11

Немного простой алгебры поможет установить пределы:

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() 

Таким образом, вы можете найти разницу между вашими у значений и использовать их, чтобы установить масштаб вдоль y- ось. Я использовал math.ceil (в отличие от math.floor), чтобы получить указанные вами значения и обеспечить целые числа.

Что касается осевого перерыва, я бы предложил посмотреть на this example.

+0

Да, это работает очень хорошо. Благодарю. – user1473483

Смежные вопросы