gpt4 book ai didi

Altair 颜色条形图(按值)未显示

转载 作者:行者123 更新时间:2023-12-02 19:32:32 26 4
gpt4 key购买 nike

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

我得到了这个数据框:

enter image description here

如果row.presented_value > row.coloring_value,我想将条形颜色设置为绿色,否则颜色为红色。

我看到了 constant values 的条件示例和 displayed 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'))
)
)

Variation 1

更改 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'))))

Variation 2

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

最佳答案

条件表达式不能使用 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')
)
)
)

enter image description here

关于Altair 颜色条形图(按值)未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61579368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com