从.csv文件在Netlogo中创建绘图

ztigrdn8  于 2022-12-27  发布在  Go
关注(0)|答案(1)|浏览(184)

我想从CSV文件在NetLogo中创建两个图。
我有两个csv文件,每个文件有一行数据。我有730个数据点,每行我想在模型中绘制作为基线,用于与模型结果进行比较。
我得到错误:图被检查为输入,但得到的是列表。
先谢了。

extensions[
csv]

globals [

 real_thc         
 real_tnhc        
]

to setup
  clear-all
  ask patches [set pcolor 39]
  reset-ticks

end

to go
plot_go1
plot_go2
tick
end

to plot_go1
  file-open "thc.csv"
  if file-at-end? [ stop ]
  set real_thc csv:from-row file-read-line
  
  file-close
end

to plot_go2
  file-open "tnhc.csv"
  if file-at-end? [ stop ]
  set real_tnhc csv:from-row file-read-line
  file-close
end
vc9ivgsu

vc9ivgsu1#

您需要一次绘制一个点,而不是一次绘制所有点。使用foreach和括号,您可以同时浏览两个列表并绘制相应的点。
(foreach list1 list2 [ [x y] -> plotxy x y])
它将合并第一个点的两个列表的第一项,合并第二个点的两个列表的第二项,以此类推。还要注意我是如何使用plotxy而不是plot的,因为plot只允许您输入y值,并假定x值在每次下一次调用时以固定的间隔递增。
将所有这些放到一个可重复的最小示例中,我们可以得到以下代码:

globals [list1 list2]

to setup
  
  ca
  set list1 [1 2 1.5 4 7] ;x-values
  set list2 [7 8 3 5 6] ;y-values
  
end

to go
  set-current-plot "plot 1"
  
  (foreach list1 list2 [ [x y] -> plotxy x y])

end

相关问题