В пандах, как отобразить историю с дополнительным линейным графиком (или другой информацией о корзинах) - PullRequest
0 голосов
/ 08 октября 2018

У меня есть кадр данных pandas со столбцом для age, который я хотел бы отобразить в виде гистограммы.Это я легко могу сделать, используя: df.age.hist(bins=<bin_num>) или df.hist('age', bins=<bin_num>)

Однако на том же чертеже я хотел бы отобразить некоторую информацию из другого столбца, например, среднее значение height точек данных в этой корзине,Это может быть линейный график (или какой-либо другой тип графика).Я также хотел бы иметь возможность легко изменить функцию со среднего на макс / мин / среднее / и т. Д.

Основная проблема в том, что я не знаю, какие значения hist располагаются в каждом бине.

1 Ответ

0 голосов
/ 08 октября 2018

График Hist в Matplotlib возвращает BarContainer, который содержит все свойства barplot.Вы можете перебирать каждый столбец и получать значения 'x' и высоту каждого столбца.

df_age  = pd.DataFrame({'AGE': np.random.randint(1,100,200) })
fig,ax = plt.subplots()
plt.hist(df_age['AGE'])
bar_height = []
bar_x = []
bar_x_lst = []
bar_y_lst = []

for bar in ax.patches:
    bar_x.append(bar.get_x())
    bar_height.append(bar.get_height())

for i,val in enumerate(bar_x):
    if i==0:
        bar_x_lst.append(val)
        continue
    bar_x_lst+=[val-0.1,val]

for i,val in enumerate(bar_height):
    if i ==len(bar_height)-1:
        bar_y_lst.append(val)
        continue
    bar_y_lst += [val,val]
bar_x_lst.append(bar_x_lst[-1]+bar.get_width())
bar_y_lst.append(bar_y_lst[-1])
bar_y_lst = [i/2 for i in bar_y_lst]
plt.plot(bar_x_lst,bar_y_lst , c= 'red' )

Это вернет что-то вроде этого: Bar_plot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...