如何在 netlogo 中绘制分布图?

How to plot a distribution in netlogo?

我有一个 NetLogo 模型。每只海龟都有两个属性,"closeness" 和 "deviation_from_oracle"。现在假设模型中有 1000 个代理。问题是,我如何绘制 "closeness" 对 "deviation_from_oracle" ?

如果我能从 NetLogo 获得一个 csv 文件,它具有所有海龟的接近值和 deviaiton_from_oracle 例如 1500 步之后,这也会有所帮助。

我绝对同意 Hugh_Kelley 关于使用 Behaviorspace 来输出您的值(或者自定义导出函数,如果您希望报告大量动态海龟的值,可以更轻松地进行数据清理 - 取决于取决于您对所选统计软件的舒适度)。

如果您确实需要在界面上绘制一些东西来向您的用户展示什么,您可能会发现 plotxy 函数可以满足您的需要。例如,您需要在界面上绘制一个名为 "plot 1" 的绘图,并在该绘图中使用一支空白笔,名为 "pen-0"。

您可以通过手动设置其 x 和 y 范围或使用 set-plot-... 命令来控制该图,如 setup:

to setup
  ca
  crt 10
  set-current-plot "plot 1"
  set-current-plot-pen "pen-0"
  set-plot-pen-mode 2
  set-plot-x-range 0 17
  set-plot-y-range 0 25
  reset-ticks
end

如果你需要为你的每只海龟绘制一个值,你可以让海龟调用 plotxy 来获取你想要绘制的任何值 - 这里我只使用它们的绝对 x 坐标和以中心距离为例:

to go
  ask turtles [
    rt random 61 - 30
    fd 1
    set-plot-pen-color color
    plotxy ( abs xcor ) distance patch 0 0    
  ]
  tick
end

这样的输出如下:

每个点都是由一只海龟绘制的。

如果你想要一些报告的平均值,让观察者调用 plotxy——另一个绘制到其他海龟的平均距离和到中心的平均距离的例子:

to go
  plotxy mean-closeness-to-others mean-distance-center
  ask turtles [
    rt random 61 - 30
    fd 1
  ]
  tick
end

to-report mean-closeness-to-others
  report mean [ mean map distance sort other turtles ] of turtles
end

to-report mean-distance-center 
  report mean [ distancexy 0 0 ] of turtles
end

对于像这样的输出: