Python 3.x 将值显示为文本,仅显示altair中具有最大高度的条的值

Python 3.x 将值显示为文本,仅显示altair中具有最大高度的条的值,python-3.x,data-visualization,altair,vega-lite,Python 3.x,Data Visualization,Altair,Vega Lite,我无法完成这个看似简单的任务,即只显示最大条的值而不是条本身,就像注释最大条一样 对于下面的代码,我只希望看到值为16的条上的文本 data=pd.DataFrame({'time':[0,1,2,3,4,5,6,7,8,9],'value':[1,2,4,8,16,11,9,7,5,3]}) 条形图=高度图表(数据)。标记条形图(不透明度=1,宽度=15)。编码( x='time:T', y='value:Q', color=alt.condition(alt.datum.time>7,alt

我无法完成这个看似简单的任务,即只显示最大条的值而不是条本身,就像注释最大条一样

对于下面的代码,我只希望看到值为16的条上的文本

data=pd.DataFrame({'time':[0,1,2,3,4,5,6,7,8,9],'value':[1,2,4,8,16,11,9,7,5,3]})
条形图=高度图表(数据)。标记条形图(不透明度=1,宽度=15)。编码(
x='time:T',
y='value:Q',
color=alt.condition(alt.datum.time>7,alt.value('red')、alt.value('steelblue'))#突出显示最后“n”条的哈奇方式
)
text=bar。标记文本(align='center',dy=-10)。编码(
text='value:Q'
)
条+文本

我尝试过使用一些转换,并使用了
argmax
max
,但到目前为止似乎没有任何效果。要么全部显示该值,要么全部为
Null

您可以使用x和y编码中的
argmax
聚合执行此操作:

import altair as alt
import pandas as pd

data = pd.DataFrame({'time':[0,1,2,3,4,5,6,7,8,9], 'value':[1,2,4,8,16,11,9,7,5,3]})

bar = alt.Chart(data).mark_bar(opacity=1, width=15).encode(
    x='time:T',
    y='value:Q',
    color = alt.condition(alt.datum.time>7, alt.value('red'), alt.value('steelblue')) #hackey way to highlight last 'n' bars 
)

text = bar.mark_text(align='center', dy=-10).encode(
    x=alt.X('time:T', aggregate={"argmax": "value"}),
    y=alt.Y('value:Q', aggregate={"argmax": "value"}),
    text='max(value):Q'
)

bar+text

啊,差一点了。这可能是另一个问题,但是,我在一个有多个相同最大值的图上测试了这个问题,在这种情况下,altair选择了第一个。有没有办法选择全部或最后一条?