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

如何使用Altair绘制每年一个分箱、带逐年标签的年份值直方图

Altair 年份直方图实现方案

完整可运行代码

import altair as alt
import pandas as pd

alt.renderers.enable("altair_viewer")
my_years = [2010, 2011, 2011, 2015, 2012]
df = pd.DataFrame(data={"year": my_years})

min_year = df["year"].min()
max_year = df["year"].max()

mychart = (
    alt.Chart(df)
    .mark_bar()
    .encode(
        x=alt.X(
            "year:Q",
            bin=alt.Bin(step=1),
            axis=alt.Axis(
                format="d",
                tickMinStep=1
            ),
            scale=alt.Scale(domain=[min_year, max_year])
        ),
        y=alt.Y(
            "count()",
            axis=alt.Axis(tickMinStep=1)
        )
    )
)

mychart.show()

核心修改说明

  • 取消冗余的日期类型转换逻辑,直接使用整数年份计算,避免时间单位转换导致的刻度偏移
  • x轴仅配置bin=alt.Bin(step=1),保证每个分箱刚好对应1年的时间范围
  • 通过x轴scale.domain显式指定范围为数据的最小、最大年份,满足第一个分箱对应最小年、最后一个分箱对应最大年的需求
  • x、y轴均配置tickMinStep=1,确保刻度间隔最小为1,不会出现小数刻度或者半格计数的问题

内容的提问来源于stack exchange,提问作者Atomic Tripod

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:45:01