尝试使用基于图表中未显示的值的条件为条形图着色。
我得到了这个数据框:
我想将条形颜色设置为绿色,如果row.presented_value > row.coloring_value
,否则颜色为红色。
我看到了条件的例子常数值 https://stackoverflow.com/questions/60331614/how-to-highlight-a-bar-by-datetime-value-with-altair and by 显示值 https://stackoverflow.com/questions/59427304/dynamic-name-in-altair-alt-condition,但无法让它为我工作。
在下面的代码示例中我想要两者foo
and bar
变红。
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
to <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'))))
仍然没有按正确的值着色。关于如何完成它有什么想法吗?
提前致谢!