You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vega Lite回归分析:日期轴显示与回归兼容问题

解决Vega Lite日期轴显示与回归分析兼容问题

核心思路是分离日期的数值计算和时间格式显示:将日期转换为数值型时间戳用于回归分析,同时在X轴编码中使用时间类型以显示日期格式。

修改步骤:

  • 添加数据转换:把原始日期字段转换为毫秒级时间戳(数值型),供回归计算使用。
  • 回归分析模块改用数值型时间戳字段进行计算。
  • 所有图层的X轴编码设置为temporal类型,确保轴显示日期格式。

修改后的完整代码

{
  "title": {
    "anchor": "start",
    "align": "left",
    "text": "回归分析",
    "font": "Verdana",
    "fontSize": 36,
    "fontWeight": "bold",
    "fontStyle": "normal",
    "subtitle": "()",
    "subtitleFont": "Verdana",
    "subtitleFontSize": 18,
    "subtitleFontWeight": "normal",
    "subtitleFontStyle": "italic"
  },
  "data": {"name": "dataset"},
  "width": 900,
  "height": 400,
  "transform": [
    {
      "calculate": "datetime(datum.Date)",
      "as": "DateObj"
    },
    {
      "calculate": "timestamp(datum.DateObj)",
      "as": "DateNum"
    }
  ],
  "params": [
    {
      "name": "_regression_method",
      "value": "polynomial",
      "bind": {
        "input": "radio",
        "options": [
          "linear",
          "logarithmic",
          "exponential",
          "power",
          "quadratic",
          "polynomial"
        ],
        "name": "回归方法: "
      }
    },
    {
      "name": "_regression_keyword",
      "expr": "if( _regression_method == 'linear', 'linear', if( _regression_method == 'logarithmic', 'log', if( _regression_method == 'exponential', 'exp', if( _regression_method == 'power', 'pow', if( _regression_method == 'quadratic', 'quad', if( _regression_method == 'polynomial', 'poly', 'JUNK' ))))))"
    }
  ],
  "layer": [
    {
      "name": "原始数据",
      "mark": {
        "type": "line",
        "filled": false,
        "color": "Black",
        "tooltip": true
      },
      "encoding": {
        "x": {
          "field": "Date",
          "type": "temporal",
          "axis": {"tickCount": 8, "format": "%Y-%m-%d"},
          "title": "日期"
        },
        "y": {
          "field": "Spends",
          "type": "quantitative",
          "axis": {"tickCount": 8},
          "title": "金额"
        }
      }
    },
    {
      "name": "回归线",
      "transform": [
        {
          "regression": "Spends",
          "on": "DateNum",
          "method": {
            "signal": "_regression_keyword"
          }
        }
      ],
      "mark": {
        "type": "line",
        "color": "#D64550"
      },
      "encoding": {
        "x": {
          "field": "DateNum",
          "type": "temporal",
          "axis": {"tickCount": 8, "format": "%Y-%m-%d"}
        },
        "y": {
          "field": "Spends",
          "type": "quantitative"
        }
      }
    },
    {
      "name": "回归统计值",
      "transform": [
        {
          "regression": "Spends",
          "on": "DateNum",
          "method": {
            "signal": "_regression_keyword"
          },
          "params": true
        },
        {
          "calculate": "'R²: ' + format( datum['rSquared'], '.2f' )",
          "as": "R2"
        }
      ],
      "mark": {
        "type": "text",
        "color": "#D64550",
        "fontSize": 20,
        "align": "right",
        "x": {"expr": "width"},
        "y": {"expr": "height * 0.1"}
      },
      "encoding": {
        "text": {
          "type": "nominal",
          "field": "R2"
        }
      }
    }
  ]
}

关键说明:

  1. 数据转换:通过transform添加DateObj(日期对象)和DateNum(毫秒时间戳),DateNum作为数值型字段供回归计算使用。
  2. 回归模块:将regression的on参数改为DateNum,确保回归分析基于数值计算。
  3. X轴显示:所有图层的X轴编码设置为temporal类型,并通过format指定日期显示格式(如%Y-%m-%d),保证轴标签为日期样式。

内容的提问来源于stack exchange,提问作者William Butler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 10:05:14