Как объединить 2 гистограммы в одном графике? - PullRequest
1 голос
/ 19 апреля 2019

Я хотел бы использовать код, который показывает все гистограммы в кадре данных. Это будет df.hist(bins=10). Тем не менее, я хотел бы добавить еще одну гистограмму, которая показывает CDF df_hist=df.hist(cumulative=True,bins=100,density=1,histtype="step")

Я попытался разделить их оси matplotlib, используя fig=plt.figure() и plt.subplot(211). Но этот df.hist на самом деле является частью функции панд, а не функции matplotlib. Я также попытался установить оси и добавить параметры ax = ax1 и ax2 к каждой гистограмме, но это не сработало.

Как я могу объединить эти гистограммы вместе? Любая помощь?

Гистограммы, которые я хочу объединить, похожи на эти. Я хочу показать их рядом или поставить второй на кончик первого. Извините, что мне было все равно, чтобы они выглядели хорошо. histogram1 histogram2

Ответы [ 2 ]

2 голосов
/ 19 апреля 2019

Можно нарисовать их вместе:

# toy data frame
df = pd.DataFrame(np.random.normal(0,1,(100,20)))

# draw hist
fig, axes = plt.subplots(5,4, figsize=(16,10))
df.plot(kind='hist', subplots=True, ax=axes, alpha=0.5)

# clone axes so they have different scales
ax_new = [ax.twinx() for ax in axes.flatten()]
df.plot(kind='kde', ax=ax_new, subplots=True)
plt.show()

Вывод:

enter image description here

Также возможно нарисовать их сбокуая сторона.Например,

fig, axes = plt.subplots(10,4, figsize=(16,10))
hist_axes = axes.flatten()[:20]
df.plot(kind='hist', subplots=True, ax=hist_axes, alpha=0.5)

kde_axes = axes.flatten()[20:]
df.plot(kind='kde', subplots=True, ax=kde_axes, alpha=0.5)

отобразит историю поверх kde.

0 голосов
/ 19 апреля 2019

Вы можете найти более подробную информацию здесь: Несколько гистограмм в пандах (возможно, дублирование между прочим), но, очевидно, Панды не могут обрабатывать несколько гистограмм на одних и тех же графиках.

Это нормально, потому что np.histogram и matplotlib.pyplot могут, проверьте вышеуказанную ссылку для более полного ответа.

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