- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些图像数据,我使用 numpy 在直方图中绘制了这些数据,如下面的代码所示。我遇到的问题是,x 轴以 1 为步长上升,但 bin 宽度约为 1.3(我通过放大并查看 bin 宽度粗略计算得出)。
这会产生一个如下所示的直方图:
正如您所看到的,在某些点,直方图下降到零。如果我放大,值为 0 的点不是整数。因为我的数据是整数,所以数字 550.8 显然会出现 0 次,这导致直方图具有上面的外观(我认为)。
如果我将垃圾箱的数量从 100 增加到 1000,我就可以解决这个问题。这给我留下了下面的直方图:
所以我终于回答了我的问题(对长篇文章表示歉意!)...有没有办法使用 np.histogram 加入垃圾箱(当像我一样使用大量数据来解决我的初始问题时)。我想这只是为了美观,不是必需的,但看起来会更好。
我还看过这里的其他帖子,但几乎所有帖子都使用 plt.hist
作为直方图,而不是 np.histogram
。
我的代码:
def histo():
heights,edges = np.histogram(data, bins=100, range=(minvalue,maxvalue))
edges = edges[:-1]+(edges[1]-edges[0]) ### not entirely sure what this line is actually doing
fig, ax = plt.subplots()
ax.plot(edges,heights)
ax.set(title=title, xlabel='ADC Value(DN/40)', ylabel='Frequency')
#do some analysis of the data between two clicks
point1, point2 = fig.ginput(2)
ax.axvspan(point1[0], point2[0], color='blue', alpha=0.5)
mask = (edges>point1[0]) & (edges<point2[0])
## more analysis code ##
data = someimage_data
histo()
最佳答案
正如您自己怀疑的那样,问题是您的整数数据需要定制适合的箱才能获得漂亮的直方图。事实上,对于直方图来说通常都是如此。
考虑对您的问题进行以下重构:
import numpy as np
# generate data
data = np.floor(np.random.randn(10000)*20+620)
data = dat[(560<dat) & (dat<650)]
# do what you're doing
heights,edges = np.histogram(data, bins=100, range=(data.min(),data.max()))
edges = edges[:-1]+(edges[1]-edges[0]) # shift first x coordinate to edges[1]
# and drop last point: 1 more edge than bins
fig, ax = plt.subplots()
ax.plot(edges,heights)
结果非常丑陋:
问题是您使用了 100 个垃圾箱,但您的整数值在 560 到 650 之间:这意味着一些垃圾箱肯定是空的!
一个简单的解决方案是设置比可能的唯一整数值的数量稍小的 bin 计数:
# do what you're doing
range = [data.min(),data.max()]
heights,edges = np.histogram(data, bins=np.ceil((range[1]-range[0])*0.95), range=range)
edges = edges[:-1]+(edges[1]-edges[0]) # shift first x coordinate to edges[1]
fig, ax = plt.subplots()
ax.plot(edges,heights)
情况越来越好:
但很明显,一些 bin 包含多个整数,而其他 bin 则不包含,这一事实显然存在伪影。这是原始问题的一个不那么令人震惊的例子。
最终的解决方案是针对您的问题使用定制的 bin:对 bin 使用 array_like
变量,每个 bin 包含一个整数。我建议使用 np.arange()
,向下移动 0.5
:
# do what you're doing
range = [data.min(),data.max()]
bins = np.arange(range[0],range[1]+2) - 0.5
heights,edges = np.histogram(data, bins=bins, range=range)
edges = edges[:-1]+(edges[1]-edges[0]) # shift first x coordinate to edges[1]
fig, ax = plt.subplots()
ax.plot(edges,heights)
而且它非常漂亮!
关于python - Numpy.histogram 连接 bin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35347515/
我正在通过阅读 doc 和 src 来学习 d3-array。 histogram.value's doc很详细,但我还是觉得很难掌握。 The source code有助于更好地理解文档,但我仍
我正在尝试使用 qmake 和 make 为 uEye 相机编译相机软件。 我的 qmake 命令运行正常,但是当我在命令行中键入 make 时出现以下错误 make[1]: Entering dir
Elasticsearch Histogramfacet似乎不支持 all_terms = true(即:即使 count=0 也返回 facetvalue/bucket) 这是正确的吗? 最佳答案
我知道我可以用 pandas 绘制直方图: df4 = pd.DataFrame({'a': np.random.randn(1000) + 1}) df4['a'].hist() 但是我怎样才能从这
我有一个整个数据集的直方图,我想将它与该数据的过滤子集的直方图进行比较。我可以在两个单独的工作表中执行此操作,然后在仪表板中并排显示它们。 有没有办法将这两个直方图组合成一个具有公共(public)轴
我有一个小型办公网络,我遇到了巨大的互联网链接延迟。我们有一个简单的网络拓扑结构:一台计算机配置为运行 ubuntu 服务器 10.10 的路由器,2 个网卡(一个连接互联网,另一个连接办公网络)和一
我正在研究 Google Tensorboard,我对直方图的含义感到困惑。我阅读了教程,但我似乎不清楚。如果有人能帮助我弄清楚 Tensorboard 直方图每个轴的含义,我真的很感激。 来自 Te
根据Prometheus文档,为了使用直方图度量具有95%的百分位数,我可以使用以下查询: histogram_quantile(0.95, sum(rate(http_request_duratio
我正在为图片上的直方图编写一个 CUDA 内核,但我不知道如何从内核返回一个数组,并且当其他线程读取它时数组会发生变化。有什么可能的解决方案吗? __global__ void Hist( T
使用 elasticsearch,我想在我的模型中获取价格字段的直方图分面。在事先不知道最低和最高价格的情况下,我想要的是让直方图覆盖整个价格范围,并具有一定数量的间隔,比如 10。我可以从文档中看到
我在 NetLogo 5.0.5 的模型中创建了一个变量的直方图,但直方图一直显示一条线而不是我想要的条。我在锅设置区域使用 set-histogram-num-bars n,但没有任何变化。在模型库
我正在构建一个使用 CIAreaHistogram 的应用程序核心图像过滤器。我使用 inputCount用于测试的值(桶数)为 10,以及 inputScale值为 1。 我得到 CIImage对于
在 R 中,使用 ecdf我可以绘制经验累积分布函数 plot(ecdf(mydata)) 并与 hist我可以绘制数据的直方图 hist(mydata) 如何在同一个图中绘制直方图和 ecdf? 编
给定每小时都有数据点的(电力)市场数据的时间序列,我想显示一个包含每小时数据的所有时间/时间范围平均值的条形图,以便分析师可以轻松地将实际价格与所有时间平均值进行比较(一天中哪个小时最贵/最便宜)。
我已经通过以下命令生成了直方图: db.mydb.aggregate([{ $bucketAuto: { groupBy: "$userId", buckets: 1e9 } }]) 假设我的唯一身份
我是 influxdb 中的 flux 新手,正在尝试编写用于生成直方图的 flux 查询。文档中给出的函数 https://docs.influxdata.com/flux/v0.24/functi
对于在多实例上运行的应用程序,我找不到任何文章描述使用 datadog 直方图与 datadog 分布相比的优势。有人可以帮助我在这两者之间做出最佳选择吗? 最佳答案 我在 DataDog 文档中发现
分箱过程是点特征直方图估计的一部分,结果是 b^3如果仅使用三个角度特征(alpha、phi、theta),则为 bins,其中 b 是 bins 的数量。 为什么是这样b^3而不是 b * 3 ?
我想测量 16 位图像中的像素强度。因此,我制作了一个 numpy 直方图,显示像素数与灰度值从 0 到 65535(16 位)的关系。我用的是 hist= numpy.histogram(grays
我正在使用这个: http://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html 我有一个列表a,我想这样使用: nu
我是一名优秀的程序员,十分优秀!