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
相关产品推荐
相关产品推荐

