如何使用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
相关产品推荐
相关产品推荐

