双轴动力学展示
图表 1 采用双 Y 轴,左轴监控产率,右轴展示环境温度曲线(支持线性升温与 Excel 自定义温度)。
CoalSimCharts.vue 是仿真的数据中心。它不仅展示了热解过程中各组分的演变趋势,还提供了高精度 XLSX 原始数据和 PDF 自动生成报告的导出功能,满足了从科研分析到论文撰写的全流程需求。
该组件将复杂的仿真结果拆分为 6 个核心物理维度,通过双 Y 轴设计解决了产率与温度跨度过大的对比难题。
双轴动力学展示
图表 1 采用双 Y 轴,左轴监控产率,右轴展示环境温度曲线(支持线性升温与 Excel 自定义温度)。
高精度 Tooltip
针对科研场景优化的信息提示框:小数值自动转为 科学计数法,时间轴精确到 0.01s。
学术级导出
支持一键生成多页 PDF 报告,每张图表均以 3 倍分辨率(3x PixelRatio)无损嵌入。
数据对齐 (XLSX)
自动将仿真结果与 21 个物理指标(全表头)进行对齐导出,缺失数据自动补空。
为了让图表具有“论文感”,我们对 ECharts 的默认样式进行了深度重写:
// 作用:定义科研质感的视觉外观const baseOpt = (title: string) => ({ title: { textStyle: { fontSize: 20, fontWeight: '900' } }, // 粗体标题 tooltip: { backdropFilter: 'blur(4px)', // 背景微模糊,极具现代感 formatter: (params) => { // 提示:这里做了特殊处理,普通数字保留4位,极小数字转科学计数法 const displayVal = val.toFixed(4); // ... 逻辑格式化 } }, grid: { containLabel: true }, // 防止坐标轴标签被切掉 xAxis: { name: '时间 (s)', nameLocation: 'middle' }});组件会根据用户的输入配置(appConfig)自动决定温度曲线的来源:
// 作用:支持两种温度模拟模式if (props.appConfig.use_table === true) { // 模式 A: 强制读取 Excel 里的原始测温点,解决 1300K 平台期截断问题 tempPoints = props.appConfig.table_data.map(row => [row[0], row[1]]);} else { // 模式 B: 理想动力学计算,基于起始温(T0)和升温速率(kT) const ti = (T_max - T0) / kT; tempPoints = data.map(t => t <= ti ? (kT * t + T0) : T_max);}这是最受研究员欢迎的功能,它解决了手动整理数据的痛苦:
// 作用:导出符合数据库规范的 Excel 表const exportXLSX = () => { const data = props.dataRows.map(row => { const obj = {}; // 按照 fullHeaders 规定的 21 个标准字段逐一填充,哪怕后端没算 fullHeaders.forEach(header => { ... }); return obj; }); // ... 封装并触发浏览器下载};
// 作用:把 ECharts 画布拼装成 PDF 电子报告const exportPDF = async () => { const pdf = new jsPDF('landscape'); // 横向 A4 纸 for (let i = 0; i < chartRefs.length; i++) { const dataUrl = instances.get(i).getDataURL({ pixelRatio: 3 }); // 高清采样 pdf.addImage(dataUrl, 'PNG', 0, 0, width, height); if (i < last) pdf.addPage(); // 自动分页 } pdf.save('仿真报告.pdf');};导出的 XLSX 文件严格遵循以下物理量顺序,方便后续进行 Origin 绘图或深度学习处理:
| 序号 | 字段名 | 序号 | 字段名 |
|---|---|---|---|
| 1-4 | 时间, 焦油, 半焦, 气体 | 11-15 | 焦油分箱量 (n=2~6) |
| 5-8 | CH4, CO2, CO, H2O | 16-18 | 桥键统计 (可断/不可断) |
| 9-10 | 交联率, 塑性体 | 19-21 | 碎片/侧链演变 |