繁体   English   中英

在 Vega-lite 的工具提示中将时间戳格式化为日期

[英]Format timestamp as a date in the tooltip in Vega-lite

我有这张图表,它从 CSV 中获取数据,将其以其中一列为轴心,并用线条显示多个时间序列。 还使工具提示自动从 pivot 列中获取名称。

带有工具提示和多条股票行的股票图表

唯一的问题是日期/时间显示为时间戳。 有没有办法让它看起来更好看,就像实际的日期+时间一样,就像它在 X 轴上的显示方式一样?

我知道我可以指定工具提示的所有值,比如

        "tooltip": [
    {
        "field": "date",
        "type": "temporal",
        "title": "date",
        "timeUnit": "utcyearmonthdatehoursminutes"
    },
    {...}
]

但我希望能够继续使用"mark": {"type": "rule", "tooltip": {"content": "data"}},以便能够动态获取工具提示字段,如果我添加上面的代码,只有日期出现在工具提示中。

这是完整的代码:

{
  "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
  "data": {"url": "data/stocks.csv"},
  "width": 400,
  "height": 300,
  "encoding": {"x": {"field": "date", "type": "temporal"}},
  "layer": [
    {
      "encoding": {
        "color": {"field": "symbol", "type": "nominal"},
        "y": {"field": "price", "type": "quantitative"}
      },
      "layer": [
        {"mark": "line"},
        {"transform": [{"filter": {"param": "hover", "empty": false}}], "mark": "point"}
      ]
    },
    {
      "transform": [{"pivot": "symbol", "value": "price", "groupby": ["date"]}],
      "mark": {"type": "rule", "tooltip": {"content": "data"}},
      "encoding": {
        "opacity": {
          "condition": {"value": 0.3, "param": "hover", "empty": false},
          "value": 0
        }
      },
      "params": [{
        "name": "hover",
        "select": {
          "type": "point",
          "fields": ["date"],
          "nearest": true,
          "on": "mouseover",
          "clear": "mouseout"
        }
      }]
    }
  ]
}

您可以在计算转换中格式化日期字段并分配新字段,然后将显示在您的工具提示中。 只需添加以下转换代码或检查编辑器 有关更多格式或日期表达式,请参阅https://vega.github.io/vega/docs/expressions

"transform": [
        {"pivot": "symbol", "value": "price", "groupby": ["date"]},
        {"calculate": "datetime(datum.date)", "as": "convertedDate"},
        {
          "calculate": "utcFormat(datum.date,'%B %d, %Y')",
          "as": "converted as string"
        }
      ],

如果要更新现有的日期字段,则只需在配置中提供日期字段, as所示:

 {"calculate": "datetime(datum.date)", "as": "date"},

我有同样的问题,我通过以下方式解决了它:

  • 从“标记”中删除“工具提示”并将其放入“编码”:

    “$模式”:“https://vega.github.io/schema/vega-lite/v5.json”,“宽度”:“容器”,“数据”:{“值”:{{dataViz2 | 安全的 }} },
    “标记”:{ “类型”:“行”,
    “点”:{“填充”:假,“填充”:“白色”}},
    “编码”:{“x”:{“字段”:“日期”,“类型”:“时间”,“轴”:{“格式”:“%b %d”}},“y”:{“ field": "total", "type": "quantitative"}, "tooltip": [ {"field": "date", "type": "temporal", "format": "%b %d %Y" }, {"field": "total", "type": "quantitative", "format": ",d" } ]
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM