如何在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是开源的。捐款,或为捐款提供资金,总是受欢迎的。