Altair 并排分组条形图而不是单个图表
altair grouped bar chart side-by-side instead of single chart
我尝试创建图表,但最终并排显示了两个图表。
如何获得单个图表,而不是像 altair 分组条形图中显示的图表 example。
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',
y='oi:Q',
color='opttype:N',
column='opttype:N'
)
输出
我尝试按照此 中指定的方式添加轴,但是我无法获得组合图。可能是我在这里遗漏了什么。
我还想知道官方文档示例在没有“轴”的情况下如何正确工作。
目前最好的方法是切换 x
和 column
编码,然后缩小每个面板的宽度:
c = alt.Chart(df).mark_bar().encode(
x='opttype:N',
y='oi:Q',
color='opttype:N',
column='strike:N'
).properties(width=50)
然后,如果您愿意,可以像链接示例中那样调整轴和航向标签。例如,您可以将 header 标签移动到底部,如下所示:
c = alt.Chart(df).mark_bar().encode(
x=alt.X('opttype:N', axis=None),
y='oi:Q',
color='opttype:N',
column=alt.Column('strike:N', header=alt.Header(orient='bottom'))
).properties(width=50)
诚然,这是一个不完美的解决方案。 Vega-Lite 正在添加 offset
编码,无需使用多列分面即可实现此目的,但目前尚不可用。
x 轴和颜色变量应该相同:
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]
})
alt.Chart(df).mark_bar().encode(
x='opttype:N',
y='oi:Q',
color='opttype:N',
column='strike:N'
)
我尝试创建图表,但最终并排显示了两个图表。 如何获得单个图表,而不是像 altair 分组条形图中显示的图表 example。
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',
y='oi:Q',
color='opttype:N',
column='opttype:N'
)
输出
我尝试按照此
我还想知道官方文档示例在没有“轴”的情况下如何正确工作。
目前最好的方法是切换 x
和 column
编码,然后缩小每个面板的宽度:
c = alt.Chart(df).mark_bar().encode(
x='opttype:N',
y='oi:Q',
color='opttype:N',
column='strike:N'
).properties(width=50)
然后,如果您愿意,可以像链接示例中那样调整轴和航向标签。例如,您可以将 header 标签移动到底部,如下所示:
c = alt.Chart(df).mark_bar().encode(
x=alt.X('opttype:N', axis=None),
y='oi:Q',
color='opttype:N',
column=alt.Column('strike:N', header=alt.Header(orient='bottom'))
).properties(width=50)
诚然,这是一个不完美的解决方案。 Vega-Lite 正在添加 offset
编码,无需使用多列分面即可实现此目的,但目前尚不可用。
x 轴和颜色变量应该相同:
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]
})
alt.Chart(df).mark_bar().encode(
x='opttype:N',
y='oi:Q',
color='opttype:N',
column='strike:N'
)