You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何自定义Altair热力图的单元格大小及行高?

解决mark_rect()热力图行高控制与水平间隙问题
  • 优先调整height参数,固定width=1
    控制行高的核心是调整每个矩形的height值,而非width。将width设为1可以让矩形横向铺满对应列的宽度,避免水平间隙,再通过height设置每行的高度:
alt.Chart(df).mark_rect(width=1, height=10).encode(
    x='x_col:O',
    y='y_col:O',
    color='value:Q'
)

根据需求修改height的数值(比如8、12),即可精准控制行高,同时消除水平间隙。

  • 通过轴缩放与视图配置约束整体布局
    如果全局宽高设置无效,可通过y轴的padding参数消除行间距,再用configure_view()固定图表整体尺寸:
alt.Chart(df).mark_rect(width=1).encode(
    x='x_col:O',
    y=alt.Y('y_col:O', scale=alt.Scale(padding=0)),
    color='value:Q'
).configure_view(
    width=600,
    height=400
)

padding=0会移除y轴分类之间的默认间距,configure_view()直接定义图表的整体宽高,确保布局符合预期。

  • 使用bandSize参数统一控制行高(分类型y轴适用)
    针对y轴为分类型数据的场景,bandSize参数可直接设置每个分类行的高度,矩形会自动适配x轴宽度,无需手动调整width
alt.Chart(df).mark_rect(bandSize=12).encode(
    x='x_col:O',
    y='y_col:O',
    color='value:Q'
)

bandSize的数值决定了每行的高度,同时保证横向无间隙。

  • 调整bandPosition优化对齐
    若仍存在微小间隙,可将y轴的bandPosition设为0.5,让矩形与分类刻度居中对齐,配合width=1彻底消除水平空隙:
alt.Chart(df).mark_rect(width=1, height=10).encode(
    x='x_col:O',
    y=alt.Y('y_col:O', bandPosition=0.5),
    color='value:Q'
)

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

火山引擎 最新活动