【问题标题】:Altair color bar chart by value not presentedAltair 彩色条形图按值未显示
【发布时间】:2020-08-18 02:53:05
【问题描述】:

尝试使用基于图表中未显示的值的条件为条形图着色。

我得到了这个数据框:

如果 row.presented_value > row.coloring_value ,我想将条形涂成绿色,否则涂成红色。

我看到了constant valuesdisplayed values 的条件示例,但无法让它对我有用。

在下面的代码示例中,我希望 foobar 都是红色的。

import pandas as pd

df = pd.DataFrame({'name':['bar','foo'],
                  'presented_value':[10,20],
                  'coloring_value':[15,25]})

(alt.Chart(df, height=250, width=375).mark_bar()
 .encode(x='name', y=alt.Y('presented_value', axis=alt.Axis(orient='right')),
         color=alt.condition(alt.datum['presented_value'] > df.loc[df.name==alt.datum.x,
                                                        'coloring_value'].values[0],
        alt.value('lightgreen'),alt.value('darkred'))
        )
)

coloring_value 的第一个值更改为<10 两个条形图都将是绿色的,尽管我希望只有bar 是绿色的。

df = pd.DataFrame({'name':['bar','foo'],
                  'presented_value':[10,20],
                  'coloring_value':[5,25]})

(alt.Chart(df, height=250, width=375).mark_bar()
 .encode(x='name', y=alt.Y('presented_value', axis=alt.Axis(orient='right')),
         color=alt.condition(alt.datum['presented_value'] > df.loc[df.name==alt.datum.x,
                                                        'coloring_value'].values[0],
        alt.value('lightgreen'),alt.value('darkred'))))

仍然没有按正确的值着色。关于如何完成它的任何想法? 提前致谢!

【问题讨论】:

    标签: altair streamlit


    【解决方案1】:

    条件表达式不能使用 pandas 构造;他们必须映射到vega expressions。 Altair 提供了 alt.datumalt.expr 对象作为方便的包装器。

    在您的情况下,当您想要比较行中的两个值时,最好的方法是直接比较它们:

    (alt.Chart(df, height=250, width=375).mark_bar()
     .encode(
        x='name',
        y=alt.Y('presented_value', axis=alt.Axis(orient='right')),
        color=alt.condition(
          alt.datum.presented_value > alt.datum.coloring_value,
          alt.value('lightgreen'),
          alt.value('darkred')
        )
      )
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-04
      • 2021-09-16
      • 1970-01-01
      • 1970-01-01
      • 2020-06-05
      • 2018-10-31
      • 2022-01-12
      相关资源
      最近更新 更多