非整数桶上的直方图

Histogram over non-integral buckets

我正在尝试为在属于 [0,1] 的部分的存储桶中收集的数据获取直方图。也就是说,我收集落入 [0, 0.05), [0.05, 0.1), [0.1, 0.15) 等范围内的值的计数。数据收集在一个列表中,列表中的每个元素都包含每个桶的计数到目前为止。

我不使用histogram功能;我看不出如何以一种方便的方式使用它来处理从许多报价中收集到的列表中的数据。相反,我一直在这样做:

let x 0
foreach normalized-buckets [
  plotxy x ?
  ;set x x + bucket-size
  set x x + 1
]

UI中的笔盒中没有绘图命令。我已经列出了增加 x 坐标的行的两个版本。

(1) 我更愿意使用被注释掉的行。我希望绘图在绘图的右下角显示 1 作为最大值,并像普通直方图中那样显示窄条。相反,我得到的是从 x 坐标 x 开始到 1 结束的重叠条。

如果您对如何执行此操作有建议,则可能无需阅读我的问题的其余部分。


(2) 我发现获得正常直方图效果的唯一方法是绘制整数值,即使用第二条 set x 行。这有两个问题,但它可能是最好的解决方案。

首先,使用此方法时,绘图会在右下角显示 1 以外的最大值,因为我绘制的值是整数 1-20,而不是 0、0.05 等。

其次,我无法弄清楚如何让绘图使用 20 作为最大值,甚至 21。问题是无论我做什么,只有当我选择时,我才能得到 20 个直方图条auto-scale 上剧情。对于大小为 0.05 的桶,即 20 个桶,结果是绘图左下角显示的最大值为 22.5,并且条形右侧有一个 space。这看起来很粗糙,但确实有效。

我尝试过在不使用 auto-scale 的情况下以各种方式使用 set-histogram-num-barsset-plot-x-range,无论是在绘图设置命令 window 中还是在我的 [=18= 中] 常规。无论我做什么,一旦绘图开始,最大值就会恢复为 1。(这发生在上面的任何 set x 行中。对于 set x x + 1,仅显示 y=0 处的一行 - -大概是因为我大多数时候第一个桶里没有数据。)

所以我可以得到一个可行的直方图,但最大值显示为 22.5,并且在条形右侧有一个 space。

我可以确认 NetLogo 的绘图系统不支持创建条形宽度不同的条形图 — 除非您使用线条模式而不是条形模式来伪造它,然后使用 plotxy,一次一个线段。这有点难,但并不可怕。

我只是从你的口头描述中迷失了方向 (2)。如果您包括给出错误结果的确切代码,并且还包括错误结果的屏幕截图,将会有所帮助。

您可以直接使用 set-plot-pen-interval 控制条形宽度。