如何存储/计算单个簇大小并在 NetLogo 中绘制它们

2024-03-18

我有一个生成黄色斑块簇的模型,我有兴趣查看簇大小的频率分布。为此,我从 NetLogo 代码库中的“补丁集群示例”中选择了代码。它似乎在查找簇方面起作用(参见下面的照片)(尽管我希望它不计算簇中的绿色斑块),但我不知道如何获取大小(或斑块计数)每个集群的。理想情况下,我想制作簇大小(不包括绿色斑块)的频率分布的直方图,并能够导出该数据。

此外,如果我能找到一种方法在模型运行时获取簇大小频率的直方图,那就太好了。

我用来获取集群的代码正好来自“补丁集群示例”,只是我杀死了所有代理,以便我可以读取数字。这里是...

to find-clusters
ask turtles [die] ;; this clears the board so I can see the clusters
  loop [
    ;; pick a random patch that isn't in a cluster yet
    let seed one-of patches with [(cluster = nobody)]
    ;; if we can't find one, then we're done!
    if seed = nobody
    [ show-clusters
      stop ]
    ;; otherwise, make the patch the "leader" of a new cluster
    ;; by assigning itself to its own cluster, then call
    ;; grow-cluster to find the rest of the cluster
    ask seed
    [ set cluster self
      grow-cluster ]
  ]
end


to grow-cluster  ;; patch procedure
  ask neighbors with [(cluster = nobody) and
    (pcolor = [pcolor] of myself )]
  [ set cluster [cluster] of myself
    grow-cluster ]
end

;; once all the clusters have been found, this is called
;; to put numeric labels on them so the user can see
;; that the clusters were identified correctly
to show-clusters
  let counter 0
  loop
  [ ;; pick a random patch we haven't labeled yet
    let p one-of patches with [plabel = ""]
    if p = nobody
      [ stop ]
    ;; give all patches in the chosen patch's cluster
    ;; the same label
    ask p
    [ ask patches with [cluster = [cluster] of myself]
      [ set plabel counter] ]
    set counter counter + 1 ]

end

感谢您的帮助!

寻找聚类之前的模型 https://i.stack.imgur.com/EqvCk.png

找到聚类后的模型 https://i.stack.imgur.com/QebLC.png


基本上,对于模型中的每个聚类值,您希望对具有相同标识符的所有补丁进行计数。这可以通过使用地图来实现。它使用唯一补丁簇值的列表(remove-duplicates [cluster] of patches),然后对于该列表中的每个条目,它会计算具有该集群值的所有补丁。结果存储在一个列表中,它们代表所有集群的大小。可以使用以下函数将该列表绘制为频率直方图histogram原始。请务必将绘图的 x 轴设置为合理的最大值,并将绘图笔设置为条形模式。

NetLogo 6 语法:

to calc-frequency
  let freq map [[i] -> count patches with [cluster = i]] remove-duplicates [cluster] of patches

  set-current-plot "hist"
  histogram freq
end

NetLogo 5 语法:

to calc-frequency
  let freq map [count patches with [cluster = ?]] remove-duplicates [cluster] of patches

  set-current-plot "hist"
  histogram freq
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何存储/计算单个簇大小并在 NetLogo 中绘制它们 的相关文章

  • 修复 ggplot 中构面中的数据顺序

    我在使用 ggplot 绘制数据时遇到问题 我无法使每个方面内的数据正确排序 我的样本数据是 data lt structure list Parameter c 0 1 0 7 0 0 0 2 0 2 0 7 0 0 0 1 0 3 0
  • 如何在 Python 中根据日期列绘制分类变量

    我有这样的数据 Date Fruit 2017 01 01 Orange 2017 01 01 Apple 2017 01 08 Orange 2017 01 09 Orange 2017 01 09 Apple 我想在一个图中按日期绘制橙
  • R-在多个图的外缘绘制居中图例

    我想在具有多个绘图的设备中的绘图区域之外绘制居中图例 SO 中提出了许多关于更改 R 图中图例位置的问题 略有不同 例如 1 R 组合图的通用标题和图例 https stackoverflow com questions 8736966 r
  • matplotlib xkcd 无法在 Mac 上运行

    我在可视化 matplotlib xkcd 图时遇到小问题 通过简单地尝试执行上找到的示例matplotlib org http matplotlib org examples showcase xkcd html 当我执行 xkcd py
  • 如何在Python中绘制数据立方体

    我想知道是否有一种方法可以在 Python 中绘制数据立方体 我的意思是每个点都有三个坐标 x part points 0 y part points 1 z part points 2 对于每个点我都有一个标量场 t x y z 我想绘制
  • 选择您要显示的数据系列

    我有一个包含多个数据系列的图 我希望能够选择我想要显示的系列 例如 只有0 and 20 那些 有没有一种简单的方法可以通过操作图表而不使用JCheckBox 例如 我希望能够通过单击该系列的图例来做到这一点 如图所示here https
  • Pandas 堆积条形图中元素的排序

    我正在尝试绘制有关某个地区 5 个地区的家庭在特定行业赚取的收入比例的信息 我使用 groupby 按地区对数据框中的信息进行排序 df df orig groupby District Portion of income value co
  • matlab 中的动画绘图

    我正在尝试创建一个三角形的动画图 最终结果应该是十个三角形 后面跟着两个更大的三角形 后面跟着一条直线 使用matlab文档 https de mathworks com help matlab ref drawnow html 我最终得到
  • Matplotlib:如何在 y 轴上绘制分类数据?

    假设我有以下代码 它来自here https stackoverflow com questions 29508208 best way to plot categorical data answertab active tab top g
  • 连接到 Apache Kafka 多节点集群中的 Zookeeper

    我按照以下说明设置了多节点 kafka 集群 现在 如何连接到zookeeper 是否可以从 JAVA 中的生产者 消费者端仅连接到一个 ZooKeeper 或者是否有一种方法可以连接所有 ZooKeeper 节点 设置多节点 Apache
  • 使用 R 将图例添加到绘图中

    我使用 R 在一个图中创建了 4 条线 这是代码 Define 2 vectors cars lt c 123 07 110 51 96 14 98 71 101 3 trucks lt c 110 31 89 91 89 81 89 31
  • 使用plot(...,add=T) 叠加栅格图会导致最终图任意错位

    我发现 当我尝试使用plot add T 叠加多个栅格时 如果我尝试将超过3 个栅格叠加在一起 则后续图不会正确对齐栅格 我的初衷是创建一个模拟土地覆盖的分类地图 其中代表覆盖类别的颜色深浅随着我们模型投影的确定性而变化 为此 我创建了一个
  • 调整 R 图的边距

    我对调整 R 图的边距很感兴趣 我在 MacOS 上使用 R Studio 在 2013 intel CPU Macbook pro 上运行 这是我用于生成绘图的数据 spins lt runif 50 min 0 max 50 这是我用来
  • 使用网络计算机进行 Matlab 并行处理

    我熟悉matlabpool and parfor用法 但我仍然需要加快计算速度 我的 1GB 网络中有一台功能更强大的计算机 两台计算机都有 R2010b 并且具有相同的代码和路径 使用两台计算机进行并行计算的最简单方法是什么 我今天使用的
  • 将多个对齐的绘图放置在一页上时避免浪费空间

    我想将四个图放在一个页面上 轴标签应仅打印在最边缘 即x仅用于底部图表的轴标签 以及y仅左图的轴标签 这既适用于整个轴的名称 也适用于各个刻度线 我可以使用以下代码生成一些内容 pdf file ExampleOutput pdf widt
  • Spyder 内联绘图

    设置 Anaconda 2 0 0 Win 64 Spyder Anaconda 附带的 2 3 0rc 我配置图形 工具 gt 首选项 gt iPython 控制台 gt 图形 gt 图形后端 gt 内联 但无论我做什么 图形总是在单独的
  • 如何调整x轴和y轴的大小

    如何调整 x 轴和 y 轴的大小 我想要什么 更具体 3900 60 30 0 60 120 180 3600 我做了什么 a 0 0 1 10000 plot a 我应该写什么才能按预期调整 x 和 y 轴的大小 EDIT 我不想 390
  • 从 3 个向量创建等值线图

    我正在尝试根据这些数据创建等高线图 pH D Tur 5 10 3 79 18918919 5 50 6 92 97297297 5 00 0 50 09009009 5 00 6 90 36036036 5 10 9 91 0810810
  • 在 ipython 中使用 igraph 绘制顶点标签时出现问题

    我通常在 IPython 笔记本中工作 我使用以下命令在 Windows 上打开它 ipython qtconsole matplotlib inline 我目前正在使用 IPython QtConsole 3 0 0 Python 2 7
  • 如何在 pod 之间或 kubernetes 集群中的节点之间复制文件?

    在 kubernetes 集群中可以这样做吗 我发现的所有示例都是从本地磁盘复制到 Pod 反之亦然 或者是从一个节点复制到另一个节点的唯一选项 例如通过 SSH SCP 或使用其他实用程序 无法进行集群到集群的复制 你需要使用kubect

随机推荐