繁体   English   中英

altair 并排分组条形图而不是单个图表

[英]altair grouped bar chart side-by-side instead of single chart

我尝试创建图表,但最终并排显示两个图表。 如何获得单个图表,而不是像 altair 分组条形图示例中显示的那样。

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'
)

Output 输出

我尝试添加此链接中指定的轴,但是我无法获得组合图。 可能是我在这里遗漏了一些东西。

另外我想知道官方文档示例如何在没有“轴”的情况下正确工作。

当前最好的方法是切换xcolumn编码,然后使每个面板的宽度变窄:

c = alt.Chart(df).mark_bar().encode(
    x='opttype:N',
    y='oi:Q',
    color='opttype:N',
    column='strike:N'
).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'
)

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM