【问题标题】:How to plot a distribution in netlogo?如何在 netlogo 中绘制分布?
【发布时间】:2019-04-03 18:31:57
【问题描述】:

我有一个 NetLogo 模型。每只海龟都有两个属性,“closeness”和“deviation_from_oracle”。现在假设模型中有 1000 个代理。问题是,我如何绘制与“deviation_from_oracle”的“亲密关系”?

如果我可以从 NetLogo 获得一个 csv 文件,该文件在例如 1500 步后具有所有海龟的 closeness 和 deviaiton_from_oracle 值,那也会很有帮助。

【问题讨论】:

  • 我会研究行为空间,这使得将输出保存到 csv 变得非常容易,它在工具菜单中,就绘图而言,它可以在 netlogo 中,但如果你觉得舒服使用 excel、r 或 python,可能更容易使用 csv

标签: netlogo


【解决方案1】:

我绝对同意 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

对于这样的输出:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 2013-01-06
    相关资源
    最近更新 更多