如何在NetLogo中生成直方图?
我有一个叫如何在NetLogo中生成直方图?,netlogo,Netlogo,我有一个叫玩家的品种。每个玩家拥有一个玩家策略。有6种可能的玩家策略。当我写作时 玩家的直方图[玩家策略] 在我的情节中没有出现任何东西 我用一支笔画了一个图,不设置图或笔名绘图名称返回绘图笔模式是栏间隔为1.0 我不知道如何索取当前的penname。但既然情节只有一支笔,那就没关系了 直方图命令位于绘图更新和画笔更新中。我两个都试过,或者一次试一个。我也试过代码。没什么区别 要显示直方图,我必须做些什么?好的,这是我认为您想要的 如果创建以下绘图: 并编写以下代码: extensions [
玩家的品种
。每个玩家拥有一个玩家策略
。有6种可能的玩家策略
。当我写作时
玩家的直方图[玩家策略]
在我的情节中没有出现任何东西
我用一支笔画了一个图,不设置图或笔名<代码>绘图名称
返回绘图<代码>笔模式
是栏
<代码>间隔为1.0
我不知道如何索取当前的penname
。但既然情节只有一支笔,那就没关系了
直方图命令位于绘图更新
和画笔更新
中。我两个都试过,或者一次试一个。我也试过代码。没什么区别
要显示直方图,我必须做些什么?好的,这是我认为您想要的 如果创建以下绘图: 并编写以下代码:
extensions [table]
breed [players player]
players-own [player-strategy]
to setup
clear-all
create-players 100 [ set player-strategy one-of ["a" "b" "c" "d" "e"] ]
reset-ticks
end
to update-strategy-plot
set-current-plot "Player strategies"
clear-plot
let counts table:counts [ player-strategy ] of players
let strategies sort table:keys counts
let n length strategies
set-plot-x-range 0 n
let step 0.05 ; tweak this to leave no gaps
(foreach strategies range n [ [s i] ->
let y table:get counts s
let c hsb (i * 360 / n) 50 75
create-temporary-plot-pen s
set-plot-pen-mode 1 ; bar mode
set-plot-pen-color c
foreach (range 0 y step) [ _y -> plotxy i _y ]
set-plot-pen-color black
plotxy i y
set-plot-pen-color c ; to get the right color in the legend
])
end
您应该得到以下曲线图:
我相信这也应该是答案
(请注意,我已将绘图代码放在代码选项卡过程中,但您也可以将其粘贴在“绘图更新命令”字段中。)您的播放器策略是数字的吗?不是。它们是代理。哦,那么我建议的解决方案将无法“按原样”工作,因为代理不能是NetLogo
表中的键。您必须添加一个步骤来将它们映射到字符串…类似于:let counts table:counts[[strategy name]of player strategy]of player
…非常感谢。我还没试过,但结果正是我想要的。[比我预期的代码多得多:)]聪明但也令人沮丧。NetLogo开发团队的资源有限。但是NetLogo是开源的。捐款,或为捐款提供资金,总是受欢迎的。