vega-lite - 使用 Vega-Lite 在指定日期范围内用 0 填充缺失数据

标签 vega-lite

我必须渲染一个使用 API 中的数据的折线图,并且它仅返回确实有一些数据的日期的值。对于没有数据的日子,它不会像预期那样返回 0 的条目。

这意味着图表不代表 0 的值,这是一个问题。

我无法修改这个 API,所以我的问题是是否有一种方法可以告诉 vega-lite 在某个日期范围内渲染数据,并且如果某天没有数据,则将其显示为 0。

我想我可以在将数据发送到我的react-vega组件之前对其进行转换,但如果这可以由vega-lite完成,那就更好了。

最佳答案

您可以使用估算(尽管您必须在估算中提供转换为数字的日期 - 我提出了一个错误 here )

下面的规范将 2012-01-05 的值推算为零:

enter image description here

{
  "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
  "description": "Using utc scale with local time input.",
  "data": {
    "values": [
      {"date": "2012-01-01", "price": 150},
      {"date": "2012-01-02", "price": 100},
      {"date": "2012-01-03", "price": 170},
      {"date": "2012-01-04", "price": 165},
      {"date": "2012-01-06", "price": 200}
    ]
  },
  "transform": [
    {
      "impute": "price",
      "key": "date",
      "value": 0,
      "keyvals": [
        1325376000000,
        1325462400000,
        1325548800000,
        1325635200000,
        1325721600000,
        1325721600000
      ]
    },
    {"timeUnit": "day", "field": "date", "as": "dateTU"}
  ],
  "mark": "line",
  "encoding": {
    "x": {"field": "date", "timeUnit": "date"},
    "y": {"field": "price", "type": "quantitative"}
  }
}

关于vega-lite - 使用 Vega-Lite 在指定日期范围内用 0 填充缺失数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74326702/

相关文章:

julia - Vega-Lite - 多个数据集的一个图

julia - 如何更改国家名称然后绘制全局 map ?

javascript - 使用特定列编码阻止图表显示的 Altair Javascript 错误

javascript - Vega Charts 抛出类型定义错误

python - Altair - 无法获得折线图中一层的工具提示

powerbi - 将 Vega (Deneb) 仪表转换为在 PowerBI 中工作

javascript - Vega-Lite 是否提供 Vega 提供的所有功能?

vega-lite - 如何更改 vega lite 热图的调色板?

plot - Vega-Lite:是否可以绘制一个 3 层图,其中一个 Y 轴仅由 2 个特定层使用?

elasticsearch - Vega-lite热图检测颜色