【问题标题】:vega-lite: how to specify date in JSON as separate fields containing year, month, and day numbers?vega-lite:如何将 JSON 中的日期指定为包含年、月和日数的单独字段?
【发布时间】:2019-07-17 01:45:21
【问题描述】:

我的 JSON 数据是一个对象列表,每个对象都包含这种格式的日期:

  "date" : {
    "year" : 2019,
    "month" : 2,
    "day" : 17
  },

我如何告诉 Vega-lite 这是一个约会? 我通过创建另一个 day 字段来解决这个问题,该字段是连接这三个字段的字符串,并使用:

    "format" : {
      "parse" : {
        "day" : "date: '%Y %m %d'"
      }

但我希望能够只使用现有的 3 个字段....

【问题讨论】:

    标签: d3.js vega vega-lite


    【解决方案1】:

    您可以使用计算转换以及datetime 表达式来执行此操作。例如(vega-editor link):

    {
      "data": {
        "values": [
          {"date": {"year": 2019, "month": 2, "day": 15}, "val": 1},
          {"date": {"year": 2019, "month": 2, "day": 16}, "val": 2},
          {"date": {"year": 2019, "month": 2, "day": 17}, "val": 4},
          {"date": {"year": 2019, "month": 2, "day": 18}, "val": 3},
          {"date": {"year": 2019, "month": 2, "day": 19}, "val": 5},
          {"date": {"year": 2019, "month": 2, "day": 20}, "val": 6}
        ]
      },
      "transform": [
        {
          "calculate": "datetime(datum.date.year, datum.date.month, datum.date.day)",
          "as": "combined"
        }
      ],
      "mark": "area",
      "encoding": {
        "x": {"field": "combined", "type": "temporal"},
        "y": {"field": "val", "type": "quantitative"}
      }
    }
    

    【讨论】:

    • 这很有帮助,谢谢!为什么第 2 个月被认为是 3 月而不是 2 月?有没有办法在你上面写的计算表达式中从月份中减去一个?修订:更改为 datum.date.month - 1 个作品!
    • 进一步修订:从零开始的月份确实是日期时间()的记录行为
    • 是的,根据文档:vega.github.io/vega/docs/expressions/#datetime,月份是从零开始的。如果您想使用正常的基于 1 的月份,您可以在计算表达式中将其更改为 date.month - 1
    猜你喜欢
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    相关资源
    最近更新 更多