非整数桶的直方图

时间:2015-03-15 17:36:10

标签: netlogo

我正在尝试获取已在[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个直方图条。 1}}关于情节。对于大小为0.05的桶,即20个桶,结果是在图的左下角显示的最大值是22.5,并且在条的右侧有一个空间。这看起来粗糙,虽然它有效。

在绘图设置命令窗口和我的auto-scale例程中,我尝试了set-histogram-num-barsset-plot-x-rangeauto-scale的各种方式使用setupset x。无论我做什么,一旦绘图开始,最大值将恢复为1.(上述set x x + 1行中的任何一行都会发生这种情况。对于{{1}},只显示y = 0处的一行 - - 可能是因为我大部分时间都没有第一个数据库中的数据。)

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

我正试图从你的口头描述中追随(2)。如果你包含了给出错误结果的确切代码,它会有所帮助,还包括错误结果的屏幕截图。