Попытка раскрасить гистограмму, используя условие, основанное на значении, которое не представлено на диаграмме.
Я получил этот фрейм данных:
Я хотел бы закрасить полосу зеленым, если row.presented_value > row.coloring_value
, иначе - красным.
Я видел примеры условий по постоянным значениям и по отображаемым значениям , но не смог заставить его работать для меня.
В коде нижеприведенный пример Я хотел бы, чтобы и foo
, и 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
на <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'))))
Все еще не окрашивается правильные значения. Есть идеи, как это сделать? Заранее спасибо!