带有错误栏的python altair堆叠条形图

时间:2020-07-15 23:00:29

标签: python altair vega-lite vega

在python altair(版本4.1.0)中,是否可以进行带有误差线的堆积条形图? 类似于以下matplotlib示例:https://matplotlib.org/3.2.1/gallery/lines_bars_and_markers/bar_stacked.html

即使知道这是根本不可能的,因为使用 vega-ligt版本2.X 不可能做到这一点!

到目前为止,这是我的尝试:

# library                                                                                                
import altair as alt                                                                                     
import pandas as pd                                                                                      
                                                                                                         
# generate data                                                                                          
df = pd.DataFrame(                                                                                       
    [                                                                                                    
        ['pertu1', 'pertu1', 'pertu1', 'pertu1', 'pertu2', 'pertu2', 'pertu2', 'pertu2'],  # perturbation
        ['state1', 'state2', 'state1', 'state2', 'state1', 'state2', 'state1', 'state2'],  # state
        [0.5, 0.5, 0.6, 0.4, 0.2, 0.8, 0.4, 0.6],  # fraction
    ],                                                                                                   
    index = ['perturbation','state','fraction']                                                          
).T                                                                                                      
                                                                                                         
                                                                                                         
# plot                                                                                                   
o_chart_bar = alt.Chart(df).mark_bar().encode(                                                           
    x='perturbation',                                                                                    
    y=alt.Y(                                                                                             
        'fraction',                                                                                      
        aggregate='mean',                                                                                
    ),                                                                                                   
    color=alt.Color(
        'state', 
        scale=alt.Scale(domain=['state1','state2'], range=['orange','red']),
    ),       
)                                                                                                        
                                                                                                         
o_chart_error = alt.Chart(df).mark_errorbar(extent='ci').encode(                                       
    x='perturbation',                                                                                      
    y='fraction',                                                                                          
    color=alt.Color(
        'state', 
        scale=alt.Scale(domain=['state1','state2'], range=['maroon','black']),
    ),        
)                                                                                             

o_chart_error.save('error.png')                                                                          

o_chart_bar.save('stackedbar.png')

o_chart = o_chart_bar + o_chart_error                                                                    
o_chart.save('stackedbar_error.png')

stacked bar plot "stacked" error confidence interval stacked bar and error confidence interval overlay

如您所见,它实际上并不是这样工作的。 我不确定是否有可能。

0 个答案:

没有答案