You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Altair条形图设置0-24小时的X轴时间刻度?

解决Altair条形图X轴00:00到23:59刻度范围问题

问题根源是你使用timeUnit="hoursminutes"后,用完整pd.Timestamp对象作为scale domain,和Altair处理后的数据类型不匹配,导致X轴无法渲染。正确做法是针对hoursminutes时间单位,直接用小时分钟格式的字符串作为domain范围。

修改后的完整代码如下:

import pandas as pd
import streamlit as st
import altair as alt

sample_df = pd.DataFrame({
    "Name": ["Abby", "Cathy", "Ellen", "Holly"],
    "Start time": [
        "1900-01-01 09:00:00",
        "1900-01-01 09:30:00",
        "1900-01-01 10:00:00",
        "1900-01-01 10:00:00"
    ],
    "End time": [
        "1900-01-01 10:00:00",
        "1900-01-01 10:30:00",
        "1900-01-01 11:00:00",
        "1900-01-01 11:00:00"
    ],
})

x_axis = alt.Axis(format="%-H:%M", tickCount=24)

c = (
   alt.Chart(sample_df)
   .mark_bar()
   .encode(
        x=alt.X(
            "Start time", 
            type="temporal", 
            timeUnit="hoursminutes", 
            axis=x_axis,
            scale=alt.Scale(domain=["00:00", "23:59"])  # 改用小时分钟字符串作为范围
        ).title("Time (24-hour format)"),
        x2=alt.X2("End time", timeUnit="hoursminutes"),
        y=alt.Y('Name:N').title(None)
   )
)

st.altair_chart(c, use_container_width=True)

关键说明:

  • 当使用timeUnit="hoursminutes"时,Altair会提取原始datetime数据的小时和分钟部分处理,此时scale的domain需匹配这种简化的HH:MM格式字符串,而非完整Timestamp对象。
  • tickCount=24会让X轴自动生成00:00到23:00的刻度,配合format="%-H:%M"确保显示为24小时制时间格式。

内容的提问来源于stack exchange,提问作者Dylan Klomparens

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 00:38:17