Matplotlib / Pandas 直方图对齐不正确
Posted
技术标签:
【中文标题】Matplotlib / Pandas 直方图对齐不正确【英文标题】:Matplotlib / Pandas histogram incorrect alignment 【发布时间】:2014-03-15 15:13:12 【问题描述】: # 直方图 n = np.random.randn(100000) 无花果,轴 = plt.subplots(1, 2, figsize=(12,4)) 轴[0].hist(n) axes[0].set_title("默认直方图") 轴[0].set_xlim((min(n), max(n))) 轴[1].hist(n,累积=真,箱=50) axes[1].set_title("累积详细直方图") 轴[1].set_xlim((min(n), max(n)));这是来自 ipython 笔记本 here In[41]
直方图条似乎没有正确地与网格对齐(见第一个子图)。这也是我在自己的情节中面临的同样问题。
谁能解释一下原因?
【问题讨论】:
您能否在问题中包含重现您的问题的代码?您的 ipython 笔记本链接将腐烂。 【参考方案1】:在 matplotlib hist 中查找 align
选项。您可以左对齐、右对齐或居中对齐。默认情况下,您的垃圾箱不会居中,这就是您看到左对齐垃圾箱的原因。这在 matplotlib 历史文档中有详细说明:http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.hist
【讨论】:
【参考方案2】:如果你有一个从 -2647 到 +1324 的高斯分布,你希望有 3971 个 bin 怎么办?也许太多了。 39 ?那么你会偏离 0.71。 40 呢?关闭 0.29。
直方图的工作方式是您可以设置bins=
参数(箱数,默认为10)。在右图中,比例似乎从大约 -4.5 到 +4.5,这使得跨度为 9 除以 10 个 bin,得到 0.9/bin。
此外,当您制作直方图时,您希望如何对事物进行分类并表示它并不明显。
如果你有一个从 0 到 1 的 bin,是 0 < x <= 1
, 0 <= x < 1
吗?如果您只有整数值,我怀疑您还希望 bin 以整数值为中心?对吧?
所以histogram
是一种让您深入了解数据的快速方法,但不会阻止您设置其参数以您喜欢的方式表示数据。
This 博客文章很好地演示了直方图中参数的影响,并解释了一些替代的绘图方法。
【讨论】:
以上是关于Matplotlib / Pandas 直方图对齐不正确的主要内容,如果未能解决你的问题,请参考以下文章
Python中Pandas/Matplotlib中直方图和密度的叠加
matplotlib/pandas 中是不是有参数将直方图的 Y 轴作为百分比?
使用 matplotlib 和 pandas 从 csv 文件中绘制直方图
使用 matplotlib 在一个子图中绘制来自 pandas DataFrame 的两个直方图