【问题标题】:altair bar chart for grouped data sorting NOT working用于分组数据排序的 altair 条形图不起作用
【发布时间】:2022-12-06 11:30:35
【问题描述】:

`Reservation_branch_code | ON_ACCOUNT |计数 :------------------------------------------------ :

0 1101 | 170 | 5484 1 1103 | 101 | 5111 2 1118 | 1 | 232 3 1121 | 0 | 27 4 1126 | 90 | 191`

想要按“Rcount”排序的图表,x 轴是“Reservation_branch_code”

下面的代码给了我没有按 Rcount 排序的图表


base =alt.Chart(df1).transform_fold(
                                  ['Rcount', 'ON_ACCOUNT'],
                                  as_=['column', 'value']
                              )
bars = base.mark_bar().encode( 
                              
                             # x='Reservation_branch_code:N',
                             x='Reservation_branch_code:O',
                              y=alt.Y('value:Q', stack=None), # stack =None enables layered bar
                              color=alt.Color('column:N', scale=alt.Scale(range=["#f50520", "#bab6b7"])),  
                              tooltip=alt.Tooltip(['ON_ACCOUNT','Rcount']),
                             #order=alt.Order('value:Q')
                            
)
text = base.mark_text(                            
                                align='center',
                                color='black',
                                baseline='middle',
                                dx=0,dy=-8,  # Nudges text to right so it doesn't appear on top of the bar
                                
                                ).encode( 
                                x='Reservation_branch_code:N',
                                y='value:Q', 
                                text=alt.Text('value:Q', format='.0f') 
                                )                        
rule = alt.Chart(df1).mark_rule(color='blue').encode(
                                y='mean(Rcount):Q'
                              )  

(bars+text+rule).properties(width=790,height=330)


我在数据框中对数据进行了排序...在 Altair 图表中的那个 df 中使用 但未找到 X 轴未按 Rcount 列排序........谢谢

【问题讨论】:

    标签: charts altair


    【解决方案1】:

    您可以传递具有排序顺序的列表:

    import altair as alt
    from vega_datasets import data
    
    source = data.barley()
    
    alt.Chart(source).mark_bar().encode(
        x='sum(yield):Q',
        y=alt.Y('site:N', sort=source['site'].unique().tolist())
    )
    

    【讨论】:

      猜你喜欢
      • 2019-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多