Python 3.x 将值显示为文本,仅显示altair中具有最大高度的条的值
我无法完成这个看似简单的任务,即只显示最大条的值而不是条本身,就像注释最大条一样 对于下面的代码,我只希望看到值为16的条上的文本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
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选择了第一个。有没有办法选择全部或最后一条?