如何在AnyLogic中基于外部Excel数据创建Plot Chart?
在AnyLogic中用Excel外部数据创建时间-数值图表的步骤
一、准备Excel文件
- 确保表格结构规范:第一列为时间数据(推荐用标准日期/时间格式,如
yyyy-MM-dd HH:mm),第二列为数值数据 - 将Excel文件放入AnyLogic项目的
data文件夹,方便后续路径引用
二、导入Excel数据并存储(解决集合存储失败问题)
- 从AnyLogic的「Connectivity」面板拖拽
ExcelFile对象到Main代理中 - 配置
ExcelFile属性:- 在
File name栏输入data/你的文件名.xlsx(xls格式则改后缀) - 勾选
Read on startup,保证模型启动时自动读取数据
- 在
- 创建泛型集合存储数据:在Main代理的「Variables」中添加
List<Pair<Date, Double>> dataList = new ArrayList<>(),用Pair封装时间和数值对,避免类型不匹配导致的存储失败 - 在Main的
On startup代码块中写入读取逻辑:
若Excel时间是文本格式,替换时间读取代码:Sheet sheet = excelFile.getSheet(0); // 从第二行开始读取,跳过表头行 for (int i = 1; i < sheet.getRowsCount(); i++) { // 读取第一列时间(若Excel时间为文本格式,需转成Date) Date time = sheet.getDate(i, 0); // 读取第二列数值 double value = sheet.getDouble(i, 1); dataList.add(new Pair<>(time, value)); }Date time = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(sheet.getString(i, 0));
三、创建并配置时间序列图表
- 从「Presentation」面板拖拽
Time Series Chart到Main画布 - 双击图表打开属性窗口,切换到
Data标签:- 点击
Add添加数据序列 Data source选择CustomX表达式填写:((Pair<Date, Double>)it).firstY表达式填写:((Pair<Date, Double>)it).secondElements选择之前创建的集合dataList
- 点击
- (可选)调整图表样式:在
Appearance标签设置标题、坐标轴标签,勾选Show legend并命名序列
四、测试模型
点击运行按钮,模型启动后会自动读取Excel数据并在图表中渲染时间-数值曲线
内容的提问来源于stack exchange,提问作者Abdelhamid Abdullah
相关产品推荐
相关产品推荐

