Altair图表tooltip如何展示pandas DataFrame原始UTC时间而非本地时间
问题原因
Altair 底层基于 Vega-Lite 渲染,temporal 类型的时间数据默认会按浏览器当前所在的本地时区做转换后显示。你 X 轴使用了带utc前缀的时间单元utchoursminutes,强制固定了UTC时区渲染,而 tooltip 默认没有指定时区配置,就会自动转成访问者的本地时间。
解决方案
有两种常用的实现方式,都可以固定显示原始UTC时间:
方案1:直接使用预处理好的时间字符串(最稳妥)
你代码中已经提前生成了存储UTC标准格式字符串的iso字段,直接把tooltip的数据源换成这个字段,类型设为nominal即可,完全不会触发时区转换:
dia1 = alt.Chart(df).mark_rule().encode( x=alt.X('utchoursminutes(utc)', type='temporal'), y=alt.Y('utchoursminutes(utc)', type='temporal'), tooltip=[ alt.Tooltip(field="iso", type="nominal", title="utc") ], ).interactive()
方案2:指定tooltip的时间格式为时区UTC
不需要新增字段,直接在Tooltip配置中指定formatType为utc,Vega-Lite就会强制按UTC时区格式化时间:
tooltip=[ alt.Tooltip(field="utc", type="temporal", title="utc", format="%Y-%m-%dT%H:%M:%S", formatType="utc") ]
内容的提问来源于stack exchange,提问作者Jochen Schäfer
相关产品推荐
相关产品推荐

