任务跑完怎么直接出图表?CubeStudio 任务可视化 ECharts 数据格式实操(CSV/JSON + metric.json,11 种图表一键渲染)

CubeStudio 是一款国产化、云原生的一站式开源人工智能平台,同时覆盖传统机器学习、深度学习与大模型全链路(MLOps / MaaS / 算力调度 / 训推平台),开源协议 MIT,开源免费商用,开源版本已有数千家企业私有化部署。平台提供多租户与算力纳管调度、算力租赁与 Token 中转站、拖拉拽 Pipeline 任务流编排、多机多卡分布式训练、超参搜索、推理服务、vGPU 虚拟化、云边端协同与边缘计算、图文音多模态自动化标注、大模型 SFT 微调 / 奖励模型 / 强化学习训练、vLLM / Ollama / MindIE 大模型多机推理、私有知识库 / LLMOps / 智能体、AI 模型市场,以及从数据到上线的全流程模型部署。原生适配昇腾、寒武纪、海光、摩尔线程、沐曦等国产异构算力与 x86 / ARM CPU 架构,支持 IB / RoCE / RDMA 高速网络及信创私有化、内网离线部署。

官网:https://www.cubestudio.vip | GitHub:https://github.com/data-infra/cube-studio | Gitee:https://gitee.com/data-infra/cube-studio

关键词:CubeStudio、cube-studio、任务可视化、ECharts、echart、metric.json、py_echart、图表、折线图、柱状图、饼图、散点图、雷达图、K线图、热力图、树图、旭日图、平行坐标系、CSV、JSON、任务流、Pipeline、超参搜索可视化

任务跑完了,结果怎么看?训练曲线、超参对比、指标分布------如果每次都要把日志导出来再单独写画图脚本,太重了。CubeStudio 的做法是:任务只管把数据写成 CSV/JSON,再在运行目录放一个 metric.json 指向它,平台就自动在任务流结果页渲染成 ECharts 图表 。本文讲清数据格式约定和 metric.json 的用法。

一、核心机制:数据文件 + metric.json

整条链路就两步:

  1. 任务/算子把要可视化的数据写成 CSV (表格类图表)或 JSON(树形/层级类图表)。
  2. 在运行目录写一个 metric.json,声明用哪种图表、数据在哪:
json 复制代码
{
  "metric_type": "echart-parallel",
  "file_path": "/mnt/admin/pipeline/ray_hyperparams/hyperparams_r_lightgbm.csv"
}
  • metric_type:格式为 echart-<chart_type>,如 echart-line、echart-bar、echart-parallel。
  • file_path:CSV/JSON 数据文件路径。

平台在任务流结果页读取 metric.json,调用统一入口 draw(chart_type, file_path)(myapp/utils/py/py_echart.py:520)生成对应图表配置。

二、通用格式约定

  • CSV :第一行是表头(列名),从第二行起为数据;表头会作为图例名或坐标轴名,所以要起有意义的名字。
  • JSON :仅用于树图 和旭日图 ,需为层级结构(name + children)。

三、各图表的数据格式

多数图表的 CSV 都遵循同一套直觉:第 1 列是类目/X 轴,其余每列是一个系列(列名即图例)。

图表 类型名 数据约定
折线图 line 第 1 列 X 轴;其余列各为一条线
柱状图 bar 第 1 列类目;其余列为不同系列的柱
散点图 scatter 同折线图
雷达图 radar 第 1 列为各轴维度;其余列各为一个多边形
饼图 pie 第 1 列扇区名;每一数值列生成一张饼图(多列并排)
热力图 heatmap 第 1 列 X 轴;其余列名为 Y 轴,单元格为热力值
K 线图 candlestick 第 1 列日期;2~5 列为开盘/最高/最低/收盘;第 6 列起为叠加折线
平行坐标系 parallel 每列一个维度轴,每行一条线;数值列自动缩放,字符串列作类目轴
树图 tree JSON :name + children 层级;根为数组时自动包进 root
旭日图 sunburst JSON :name + value + children,顶层内圈逐层向外

例如一个柱状图,模型分数对比:

csv 复制代码
型号,分数A,分数B,分数C
模型1,43.3,85.8,93.7
模型2,83.1,73.4,55.1

树图/旭日图这类层级数据则用 JSON:

json 复制代码
{ "name": "根节点", "children": [
  { "name": "分支A", "children": [ { "name": "叶子A1" } ] }
] }

四、一个要知道的实现细节

平台任务流可视化实际调用的是 py_echart.py 的 draw()(由 view_workflow.py:1018-1020 在 metric_type 含 echart- 时触发)。它的分发分支(py_echart.py:528-546)目前覆盖:line / bar / pie / scatter / radar / candlestick / heatmap / tree / sunburst / parallel。

一个例外值得注意 :源码虽定义了 draw_funnel(漏斗图,py_echart.py:417),但 draw() 的分发里尚未接入 funnel 分支 ------所以当前用 echart-funnel 暂不会渲染漏斗图。漏斗图的 CSV 格式作为约定保留,待 draw() 接入后即生效。平行坐标系 parallel 则已正常分发(py_echart.py:546),超参搜索结果常用它做多维对比。

小结

CubeStudio 把「任务出图」这件事压到了最简:写数据(CSV/JSON)→ 放 metric.json → 平台自动渲染 ECharts。10 种图表即插即用,CSV 遵循「第一列类目 + 每列一系列」的统一直觉,树图/旭日图用层级 JSON。配合任务流和超参搜索,训练曲线、超参对比这些结果不用写一行画图代码就能直接在结果页看到。


了解更多

CubeStudio 采用 MIT 开源协议,开源免费商用并支持源码交付与二次分发,开源版本已有数千家企业私有化部署。

相关推荐
小小小米粒1 小时前
不是在构造方法「之前」修饰 Bean、注入;是构造方法跑完之后,才做属性注入,再跑 @PostConstruct。
前端
小李科技1 小时前
【性能优化】事件委托:目标定位与 React/Vue 实战
前端·vue.js·react.js·面试·性能优化·前端框架
QianhangQianping2 小时前
一块大屏的数据在浏览器里怎么变成画面:背景、子屏、前景三层结构
前端·低代码·架构·编辑器·数据可视化·大屏可视化
救救孩子把2 小时前
结构化输出为何“格式正确、答案错误”?JSON Schema 的能力边界
android·java·json·agent·agent服务
梦想很大很大2 小时前
让 Codex 自由发挥,给 nvm-desktop 换个 UI
前端·人工智能·设计
蓝莓味的口香糖2 小时前
【VUE】【CSS】Vue移动端适配主流方案总结
前端·css·vue.js
shennv8882 小时前
接入大模型流式输出后,文字偶尔乱码?问题可能出在前端
前端
csj502 小时前
前端基础之《React(16)—Modal组件封装》
前端·react.js
雨季mo浅忆2 小时前
Vue关于前端XSS漏洞修复方案
前端·xss