首页 > 解决方案 > Altair:如何使用另一列作为条形图标签?

问题描述

我想要另一个数据框列作为我的条形图的标签。我认为使用labelExprdatum构造会起作用,但没有显示任何内容。

我将问题简化为:

    df = pd.DataFrame({'name':['bar','foo'],
                       "another": ['a', 'b'],
                      'value':[10,20]})
    
    (alt.Chart(df, height=250, width=375).mark_bar()
     .encode(x=alt.X('name', axis=alt.Axis(labelExpr="datum.another")), 
             y='value')
            
    )

输出为空:

没有标签的图表

我尝试了一些变化,labelExpr=alt.datum.another但它仍然是空的。

是否可以在没有另一层的情况下做到这一点?

标签: altairvega-lite

解决方案


如果另一列的条目与第一列的条目完美的一对一映射,最好的方法是another直接在编码中使用,必要时调整标题:

(alt.Chart(df, height=250, width=375).mark_bar()
  .encode(x=alt.X('another', title='name'),
          y='value')
)

如果另一列与第一列没有直接的一对一映射,那么我认为您的问题不恰当,因为每个标签都不会使用一个唯一的条目。


推荐阅读