AnyLogic学习
AnyLogic代码绘制PLot
Plot(TimePlot)
AnyLogic仿真在图表展示中,需要使用到图表(Chart),该部分可通过可视化拖拽方式完成,也可通过代码控制完成,包含Plot生成,DateSet添加等。代码控制绘制图形主要用于不定量的数据集图表绘制,如展示N各个体的速度值,而N是仿真前需要设置的变量。
在图示中,变量nodeid_dataset_xx类型为Map<Integer,DataSet>,用来存储需要展示的数据,Key为PLot编号,DateSet为数据集,该数据集绘制在对应的Plot上。
实现
// 初始化变量并关联至Plot
for(int id =0;id<size_nodes;id++){
DataSet ds1 = new DataSet(10000);
DataSet ds2 = new DataSet(10000);
DataSet ds3 = new DataSet(10000);
DataSet ds4 = new DataSet(10000);
nodeid_dataset_vx.put(id,ds1);
nodeid_dataset_vy.put(id,ds2);
nodeid_dataset_x.put(id,ds3);
nodeid_dataset_y.put(id,ds4);
Color line_color = new Color(uniform_discr(0,255),uniform_discr(0,255),uniform_discr(0,255));
plot_vx.addDataSet(nodeid_dataset_vx.get(id),
null,
line_color,
true,
Chart.InterpolationType.INTERPOLATION_STEP,
1,
Chart.PointStyle.POINT_NONE
);
plot_vy.addDataSet(nodeid_dataset_vy.get(id),
null,
line_color,
true,
Chart.InterpolationType.INTERPOLATION_STEP,
1,
Chart.PointStyle.POINT_NONE
);
plot_x.addDataSet(nodeid_dataset_x.get(id),
"node:"+id,
line_color,
true,
Chart.InterpolationType.INTERPOLATION_STEP,
1,
Chart.PointStyle.POINT_NONE
);
plot_y.addDataSet(nodeid_dataset_y.get(id),
"node:"+id,
line_color,
true,
Chart.InterpolationType.INTERPOLATION_STEP,
1,
Chart.PointStyle.POINT_NONE
);
}
//x_v_plot
for(int node = 0;node<size_nodes;node++){
Agent a = agents.get(node);
nodeid_dataset_vx.get(a.id).add(time(),a.vx);
nodeid_dataset_vy.get(a.id).add(time(),a.vy);
nodeid_dataset_x.get(a.id).add(time(),a.x);
nodeid_dataset_y.get(a.id).add(time(),a.y);
}
结果
size_nodes取为100时,结果如下图所示