当前位置: 首页 > 知识库问答 >
问题:

Matplotlib:如何使两个直方图具有相同的bin宽度?

卢书
2023-03-14

我花了一些时间在互联网上寻找这个问题的答案,我也试着在SO的所有地方寻找答案,但我想我没有正确的术语……请原谅,如果这是某个已知问题的重复,我很乐意删除我的帖子,改为引用该帖子!

无论如何,我试图在Matplotlib中的同一图形上绘制两个直方图。我的两个数据源是包含 500 个元素的列表。要说明我面临的问题,请参阅下图:

如您所见,在默认参数下,直方图具有不均匀的条块大小,即使条块的数量是相同的。我想保证两个直方图的面元宽度是相同的。我能做这件事吗?

提前感谢!

共有3个答案

颜乐
2023-03-14

我想您可以将范围参数与 bin 参数一起使用,为两个数据集提供相同的 bin 大小。

plt.hist(x, bins=n, range=(a,b))

其中,如果保持< code>(b-a)/n的比值不变,那么最终应该得到相同的仓位大小。

孙德本
2023-03-14

您应该从hist返回的值中使用bins

import numpy as np
import matplotlib.pyplot as plt

foo = np.random.normal(loc=1, size=100) # a normal distribution
bar = np.random.normal(loc=-1, size=10000) # a normal distribution

_, bins, _ = plt.hist(foo, bins=50, range=[-6, 6], normed=True)
_ = plt.hist(bar, bins=bins, alpha=0.5, normed=True)
蒙光华
2023-03-14

我认为,在大多数情况下,无需担心每个数据集的分布范围,就可以轻松工作的一致方法是将数据集放入一个大的数据集,确定条块的边缘,然后绘制:

a=np.random.random(100)*0.5 #a uniform distribution
b=1-np.random.normal(size=100)*0.1 #a normal distribution 
bins=np.histogram(np.hstack((a,b)), bins=40)[1] #get the bin edges
plt.hist(a, bins)
plt.hist(b, bins)
 类似资料:
  • 我正在制作一个有3个子绘图的图,尽管它们的宽度都相等,但一些直方图箱子的大小似乎不同。我的目标是创建一个具有相等宽度条的直方图。 我正在绘制来自三个不同数据框< code>df1、df2、df3的数据,每个数据框都有自己的轴。前两个数据帧(< code>df1,df2)有12个值,而第三个(< code>df3)有21个值。一个简单的工作示例: 在上图中,第三个子图 具有一个柱形图条,其条柱宽度显

  • 我正在尝试在 matplotlib 中绘制具有多个数据序列的直方图。 我有不相等间隔的箱子,但是我想要每个箱子得到相同的宽度。所以我这样使用属性< code>width: 结果是: 我怎样才能去掉两个系列的两个对应箱子之间的边距?一、 e.如何为每个箱子分组不同系列的钢筋? 谢谢

  • 我试图从下面的论文(http://dx.doi.org/10.1016/j.envsci.2011.08.004)中复制图表图1的概念: 它是一个直方图,其箱子宽度取决于的值,其高度取决于变量。图表中的精确值并不重要,而是要了解如何复制它。 以下代码为每个创建了一个具有两个特征的数据帧(and measure的宽度是减量,

  • 问题内容: 我正在使用matplotlib制作直方图。 有什么方法可以手动设置垃圾箱的大小,而不是垃圾箱的数量吗? 问题答案: 实际上,这很简单:您可以提供一个带有bin边界的列表,而不是bin的数量。它们也可能分布不均: 如果只希望它们均匀分布,则可以使用range: 添加到原始答案 上一行仅适用于整数填充。正如macrocosme所指出的,对于浮点数,您可以使用:

  • 问题内容: 我有这段代码可以生成直方图,标识出三种类型的字段。“低”,“中”和“高”: 产生这个: 如何在其中获得三种不同颜色的图例? 问题答案: 您需要自己创建图例。为此,创建一些未在图中显示的矩形(所谓的代理艺术家)。 完整的例子:

  • 我正在matplotlib中创建直方图,但遇到了问题,因为当所有条的宽度都应该相同时,它们的宽度是不同的。这方面的一个例子如下: 显示迭代之间可变条形宽度的直方图 在图像中,左列具有完整的直方图,右列在完整直方图的各个部分中进行缩放。在完整的直方图中,由于某种未知的原因,两个试验之间的条形宽度不同,其中在缩放的右侧,它们具有相同大小的条形。我希望它们具有相同大小的条形图,其中 rwidth=1,并