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

Altair绘制分组柱状图出现两张并列图表 如何合并为单张图表

核心问题原因

你当前输出两张并列独立图表的核心原因是代码中添加了column='opttype:N'配置,该参数的作用是按照opttype字段的取值拆分生成多个独立分面图表。Altair官方分组柱状图示例未使用分面参数,因此能直接输出单张分组图表。

你之前调整axis配置没有生效,是因为没有解决分面这个根源问题,无论怎么调整轴样式,分面逻辑都会生成多张独立图表。

修正后代码(适配Altair 5.x及以上版本,推荐)

import pandas as pd
import altair as alt

df = pd.DataFrame({
    'strike': [200,225,250,275,300,325,350,200,225,250,275,300,325,350],
    'opttype': ['ce','ce','ce','ce','ce','ce','ce','pe','pe','pe','pe','pe','pe','pe' ],
    'oi': [100,150,500,800,450,200,77,50,500,210,300,150,60,17]
})

c = alt.Chart(df).mark_bar().encode(
    x='strike:N',
    # 按opttype分组偏移,实现同strike下多柱并列
    xOffset='opttype:N',
    y='oi:Q',
    color='opttype:N'
)
c.show()

旧版本兼容写法(Altair 4.x及以下)

如果无法升级Altair版本,可通过调整分面参数实现效果:

c = alt.Chart(df).mark_bar().encode(
    x='opttype:N',
    y='oi:Q',
    color='opttype:N',
    column=alt.Column('strike:N', header=alt.Header(labelOrient='bottom', titleOrient='bottom'))
).configure_view(stroke=None).configure_facet(spacing=0)

疑问解答

Altair官方分组柱状图示例不需要额外配置axis的原因是,其默认使用单图表内的分组编码逻辑实现柱子排布,没有引入分面带来的多轴、多视图拆分问题,因此不需要额外调整axis配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:24:06