如何解决Altair Chart从TimeStamps中“读取”了比应有的更多信息
所有人
我有一个类似于以下内容的DataFrame(我通过执行df.to_dict()
来获得):
{'end_datum': {48: Timestamp('2020-09-25 00:00:00'),96: Timestamp('2020-09-30 00:00:00'),77: Timestamp('2020-09-29 00:00:00'),51: Timestamp('2020-09-25 00:00:00'),95: Timestamp('2020-09-30 00:00:00')},'type': {48: 'Frist Gericht',96: 'Frist Gericht',77: 'Berufungsfrist',51: 'Frist Gericht',95: 'Frist Gericht'},'motorenbezeichnung': {48: 'EA 189',96: 'EA 288',77: 'OM 642',51: 'OM 651',95: 'EA 189'},'size': {48: 30,96: 9,77: 1,51: 8,95: 54}}
alt.Chart(pv_clean).mark_bar().encode(
x= "end_datum:T",y="size:Q",color = "motorenbezeichnung:N").properties(width=1000)
我得到以下输出:
沿X轴的标签包含很多信息。我尝试使用altair的transform_timeunit()
,
alt.Chart(pv_clean).mark_bar().encode(
y= "date(end_datum:T)",x="size:Q",color = "motorenbezeichnung:N").properties(width=1000)
但图表变为空白:
有趣的是,如果我将日期从x更改为y,
alt.Chart(pv_clean).mark_bar().encode(
y= "end_datum:T",color = "motorenbezeichnung:N").properties(width=1000)
日期的解析方式更有意义:
任何人都可以向我解释以下内容:
我正在使用jupyter实验室2.2.6版和altair 4.1.0版。
谢谢。
解决方法
问题是x轴上的默认刻度数超过了您的期望。
一种解决此问题的简便方法是将刻度之间的最小间距设置为您希望看到的最小间距;对于时间轴,刻度间隔以毫秒为单位,因此使用
x=alt.X("end_datum:T",axis=alt.Axis(tickMinStep=1000*60*60*24))
使事情看起来更好。
以下是使用您提供的数据的完整示例:
alt.Chart(pv_clean).mark_bar().encode(
x=alt.X("end_datum:T",axis=alt.Axis(tickMinStep=1000*60*60*24)),y="size:Q",color = "motorenbezeichnung:N"
).properties(width=1000)
请注意,您的图表2无效,因为您写了y= "date(end_datum:T)"
而不是y= "date(end_datum):T"
,而图表3却有效,因为y轴的像素较少,导致默认刻度减少了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。