NetLogo绘制新点前清除旧点及负数值类直方图实现问询
NetLogo 负数值类直方图实现及旧图形清除方案
一、解决旧图形无法清除的问题
你遇到的旧图形残留问题,核心是要确保在每次绘制新数据前执行清除命令,正确的操作方式:
- 如果是通过按钮触发绘制,将
clear-plot放在绘制代码的最开头:to draw-histogram clear-plot ; 清除当前plot的所有旧图形元素 ; 后续绘制代码 end - 如果使用plot窗口的「Update commands」,同样把
clear-plot作为第一条命令,确保每次plot更新时先清空旧内容。
二、负数值类直方图的手动实现
NetLogo原生histogram命令不支持负数值,我们可以通过手动绘制矩形条形来模拟直方图效果,正数向上延伸、负数向下延伸:
基础单策略实现示例
以你的random策略数据为例:
to draw-custom-histogram clear-plot let bar-width 0.8 ; 设置条形宽度,避免重叠 let target-strategy "random" let data-array table:get outcomes-dict target-strategy let total-items array:length data-array ; 自动适配y轴范围(可选,让正负值都能完整显示) set-plot-y-range (min data-array) (max data-array) ; 遍历每个数据点绘制条形 foreach range total-items [ let x-pos (? + 1) ; x轴位置从1开始,对应数组第1到第5个元素 let value array:item data-array ? let half-bar bar-width / 2 ; 绘制闭合矩形条形 plotxy (x-pos - half-bar) 0 plotxy (x-pos - half-bar) value plotxy (x-pos + half-bar) value plotxy (x-pos + half-bar) 0 plotxy (x-pos - half-bar) 0 ; 闭合图形,形成完整条形 ] end
多策略并列条形扩展
如果需要在同一图中展示多个策略的对比,可调整每个策略的x轴偏移,避免条形重叠:
to draw-multi-strategy-histogram clear-plot let bar-width 0.3 ; 缩小单条宽度,留出并列空间 let strategies ["random" "cooperate" "defect" "tit-for-tat" "unforgiving"] let strategy-count length strategies let offset-step bar-width + 0.1 ; 策略间的间隔 ; 收集所有数据的极值,统一设置y轴范围 let all-values [] foreach strategies [ set all-values lput (table:get outcomes-dict ?) all-values ] set all-values flatten all-values set-plot-y-range (min all-values) (max all-values) ; 遍历每个策略的数组数据 foreach range strategy-count [ let strategy item ? strategies let data-array table:get outcomes-dict strategy let total-items array:length data-array foreach range total-items [ let base-x (? + 1) ; 基础x位置 let x-pos base-x + (? * offset-step) - ((strategy-count - 1) * offset-step / 2) ; 计算当前策略的x偏移 let value array:item data-array ? let half-bar bar-width / 2 ; 绘制条形 plotxy (x-pos - half-bar) 0 plotxy (x-pos - half-bar) value plotxy (x-pos + half-bar) value plotxy (x-pos + half-bar) 0 plotxy (x-pos - half-bar) 0 ] ] end
内容的提问来源于stack exchange,提问作者Ruairí Grant
相关产品推荐
相关产品推荐

