Json-Python-Server/docs/charts-data-mode-plan.md
2026-01-29 18:18:32 +08:00

3.5 KiB
Raw Permalink Blame History

charts 数据模式(现行版)

旧版文档已存档为 docs/旧的charts-data-mode-plan.md

目标

  • 后端返回结构化图表数据,前端用 ECharts 渲染;不再生成/传输图片。
  • 统一清洗,避免 NaN/Inf/不可序列化对象导致接口崩溃。
  • 响应结构以 analysis.<lang>.charts 为准;images 为空仅用于兼容旧前端。

序列化规范to_echarts_safe 已实现)

  • NaN/Inf/pd.NA → nullnumpy 标量转原生类型Decimal 转 float。
  • Timestamp/datetime → ISO8601 字符串。
  • ndarray/DataFrame/Series → list 或 records递归清洗并防循环引用。

响应骨架(实际线上形态)

{
  "success": true,
  "meta": { ... },
  "analysis": {
    "zh": {
      "data_description": "...",
      "preprocessing_steps": [...],
      "api_analysis": { ... },
      "steps": [
        { "key": "ts_img", "title": "Time Series Analysis", "chart": "ts", "summary": "..." },
        ...
      ],
      "charts": {
        "ts": { ... },
        "acf_pacf": { ... },
        ...
      }
    }
  },
  "images": {},
  "log": [...]
}
  • 顶层不再单独返回 charts;前端应读取 analysis.<lang>.charts。如需顶层别名,可在路由层追加映射。
  • steps[].chart 指向 charts 中的 key驱动前端展示顺序。

图表数据格式(按现实现状)

  • 时间序列 tstype: linedataset = [[col...], [...]],含 timestamp 字符串。
  • ACF/PACF acf_pacfseries: [{name: col, acf:[{lag,value}], pacf:[{lag,value}]}],每个列打包在同一项。
  • 平稳性 stationarityrecords: [{column, ADF:{...}, KPSS:{...}}]
  • 正态性 normalityrecords: [{column, histogram:[{range_start,range_end,count},...], Shapiro-Wilk:{...}, Jarque-Bera:{...}}]
  • 季节分解 seasonaltype: linedataset 包含 observed/trend/seasonal/resid缺失为 null。
  • 频谱 spectral已做摘要以控体积
    • spectrogram: f, t, Sxx_log10_mean, Sxx_shape;不返回完整矩阵。
    • periodogram: fPxx_den 仅前 20 个点。
  • 相关性 heatmaptype: heatmapdata[i,j,value] 扁平列表,含 xLabels/yLabels。
  • PCA 碎石 pca_screetype: bardataset 组件/解释度/累积值。
  • PCA 散点 pca_scattertype: scatterrecords 含 PC1/PC2/timestamp。
  • 特征重要性 feature_importancetype: barrecords 含 feature/importance。
  • 聚类 clustertype: scatterrecords 含 cluster 与 timestamp。
  • 因子分析 factortype: scatterrecords 含 Factor1/Factor2 与 timestamp。
  • 协整 cointegrationtype: tablemeta 直接承载 trace_stat/crit_vals/eigen_vals。
  • VAR 预测 var_forecasttype: linedataset 含 step 与各 forecast 列。

兼容与注意

  • images 为空对象;任何遗留的 image_path 已剔除。
  • 当前频谱输出为“摘要版”,若要还原全量矩阵需调整 perform_spectral_analysis
  • ACF/PACF 结构与旧文档不同,前端需按现状解码;若要拆分 series可在后端调整 _build_chart_payload
  • 正态性直方图已由后端分箱,无需前端再分箱。

已知可选改进

  1. 路由层增加顶层 charts 别名,便于前端迁移。
  2. ACF/PACF 改为每列拆两条 seriesacf/pacf与旧示例一致。
  3. 为 spectral 增加 mode=full|summary 开关,前端可选取全量或摘要。
  4. 对大体积 dataset 增加可选抽样/截断策略。