【发布时间】:2017-05-19 19:12:34
【问题描述】:
我有一个名为 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)
但是当我尝试叠加时,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)
一些提示? (补充问题:如何改变密度平滑的宽度?)
【问题讨论】:
-
是的,谢谢。我只需要设法设置 x 范围大小并隐藏第二个 y 轴...谢谢!
-
@Matt 没有数据很难说,但是是的,seaborn 旨在让困难的事情变得简单;)
-
@IanS 我在看你的 seaborn 喜欢,它也可能是一个很好的选择。谢谢!
-
Seaborn 有一个顶级函数可以做到这一点:seaborn.pydata.org/examples/distplot_options.html
标签: python pandas matplotlib histogram seaborn