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

如何在Altair中横向并排排列两个分面图表

解决Altair分面图表横向并排Winter/Sommer的问题

没问题,我懂你想要的效果——把Winter和Sommer对应的两组分面图表横向摆在一起,而不是上下堆叠。既然Jupyter单元格只能显示一个Altair图表,我们可以用Altair自带的hconcat()方法来实现这个需求,它能把多个图表横向拼接成一个整体,完美适配Jupyter的显示限制。

具体实现思路

  • 分别为Winter和Sommer创建独立的分面图表,每个图表内部用column='Pos:N'按位置分面
  • 用alt.hconcat()把两个图表横向合并
  • 统一配置图表样式(比如轴标签、标题、y轴范围),保证视觉一致性和数据可比性

完整代码示例

import altair as alt

# 生成Winter对应的分面图表
winter_chart = alt.Chart(df[df['Saison'] == 'Winter']).mark_bar().encode(
    x='Year:O',
    y=alt.Y('Profile:Q', title='Profile', scale=alt.Scale(domain=[3.5, 6.2])),
    color='Year:N'
).facet(
    column='Pos:N'
).properties(
    title='Winter Season'
)

# 生成Sommer对应的分面图表
sommer_chart = alt.Chart(df[df['Saison'] == 'Sommer']).mark_bar().encode(
    x='Year:O',
    y=alt.Y('Profile:Q', title='', scale=alt.Scale(domain=[3.5, 6.2])),
    color='Year:N'
).facet(
    column='Pos:N'
).properties(
    title='Sommer Season'
)

# 横向拼接两个图表,共享y轴刻度
combined_chart = alt.hconcat(winter_chart, sommer_chart).resolve_scale(
    y='shared'
)

combined_chart

代码细节说明

  1. 先通过数据过滤拆分出Winter和Sommer的子集,分别生成对应分面图表,保证每个图表只展示单一季节的分组数据
  2. 设置统一的y轴范围(匹配你的数据最小值3.5和最大值6.2),并通过resolve_scale(y='shared')让两个图表共享y轴刻度,避免视觉上的偏差
  3. 隐藏Sommer图表的y轴标题,避免重复显示,让整体布局更简洁
  4. 最后用hconcat()把两个图表横向拼接成一个整体,作为单一对象在Jupyter单元格中显示,完全符合环境限制

这样就能实现你想要的Winter和Sommer图表横向并排的效果啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:23:32