2015-11-24 1 views
4

Я хотел бы получить значения от matplotlib.axes.AxesSubplot, который возвращается с pandas.Series.hist. Есть ли способ сделать это? Я не смог найти атрибут в списке.Получить значения от matplotlib AxesSubplot

import pandas as pd 
import matplotlib.pyplot as plt 

serie = pd.Series([0.0,950.0,-70.0,812.0,0.0,-90.0,0.0,0.0,-90.0,0.0,-64.0,208.0,0.0,-90.0,0.0,-80.0,0.0,0.0,-80.0,-48.0,840.0,-100.0,190.0,130.0,-100.0,-100.0,0.0,-50.0,0.0,-100.0,-100.0,0.0,-90.0,0.0,-90.0,-90.0,63.0,-90.0,0.0,0.0,-90.0,-80.0,0.0,]) 
hist = serie.hist() 
# I want to get values of hist variable. 

Я знаю, что я могу получить значение гистограммы с np.histogram, но я хочу использовать панд метод Hist.

+1

Я не уверен, что это возможно: источник Pandas [plotting.py] (https://github.com/pydata/pandas/blob/master/pandas/tools/plotting.py), похоже, выбрасывает данные с бинном , края бинов и объекты патча, к которым возвращается matplotlib. Почему бы не построить прямую связь с 'plt.hist'? – xnx

ответ

5

Как указано в комментариях, это не так легко доступно, как если бы вы использовали plt.hist. Однако, если вы действительно хотите использовать функцию pandas hist, вы можете получить , из patches, которые добавляются в histAxesSubplot, когда вы позвоните serie.hist.

Вот функция Переберите пластырей, и вернуть бен края и гистограммы отсчеты:

import pandas as pd 
import matplotlib.pyplot as plt 

serie = pd.Series([0.0,950.0,-70.0,812.0,0.0,-90.0,0.0,0.0,-90.0,0.0,-64.0,208.0,0.0,-90.0,0.0,-80.0,0.0,0.0,-80.0,-48.0,840.0,-100.0,190.0,130.0,-100.0,-100.0,0.0,-50.0,0.0,-100.0,-100.0,0.0,-90.0,0.0,-90.0,-90.0,63.0,-90.0,0.0,0.0,-90.0,-80.0,0.0,]) 
hist = serie.hist() 

def get_hist(ax): 
    n,bins = [],[] 
    for rect in ax.patches: 
     ((x0, y0), (x1, y1)) = rect.get_bbox().get_points() 
     n.append(y1-y0) 
     bins.append(x0) # left edge of each bin 
    bins.append(x1) # also get right edge of last bin 

    return n,bins 

n, bins = get_hist(hist) 

print n 
print bins 

plt.show() 

Вот выход n и bins:

[36.0, 1.0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 1.0]       # n 
[-100.0, 5.0, 110.0, 215.0, 320.0, 425.0, 530.0, 635.0, 740.0, 845.0, 950.0] # bins 

А вот гистограмма заговор проверка:

enter image description here

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