Python中Pandas / Matplotlib中直方图和密度的叠加

我有一个名为clean的Pandas数据帧,其中包含一个列v,我想绘制一个直方图并叠加一个密度图.我知道我可以用这种方式在另一个下面绘制一个:

import pandas as pd
import matplotlib.pyplot as plt

Maxv=200

plt.subplot(211)
plt.hist(clean['v'],bins=40, range=(0, Maxv), color='g')
plt.ylabel("Number")

plt.subplot(212)
ax=clean['v'].plot(kind='density')
ax.set_xlim(0, Maxv)
plt.xlabel("Orbital velocity (km/s)")
ax.get_yaxis().set_visible(False)

Python中Pandas / Matplotlib中直方图和密度的叠加

但是当我尝试叠加时,y刻度不匹配(我松开y轴刻度和标签):

yhist, xhist, _hist = plt.hist(clean['v'],bins=40, range=(0, Maxv), color='g')
plt.ylabel("Number")

ax=clean['v'].plot(kind='density') #I would like to insert here a normalization to max(yhist)/max(ax)
ax.set_xlim(0, Maxv)
plt.xlabel("Orbital velocity (km/s)")
ax.get_yaxis().set_visible(False)

Python中Pandas / Matplotlib中直方图和密度的叠加

一些暗示? (附加问题:如何更改密度平滑的宽度?)

解决方法:

根据您的代码,这应该工作:

ax = clean.v.plot(kind='hist', bins=40, normed=True)
clean.v.plot(kind='kde', ax=ax, secondary_y=True)
ax.set(xlim=[0, Maxv])

您可能甚至不再需要secondary_y.

上一篇:python – Seaborn在热图中显示3位数字的科学记数法


下一篇:将颜色分配/映射到Seaborn.regplot中的点(Python 3)