[英]Combining string and aggregate function within bar chart label in Altair
我使用 Altair 制作了兩個帶有交叉過濾的交互式鏈接直方圖。 我使用 mark_text() 在每個條上創建了帶有過濾項目總和的標簽。 下面是鏈接圖表的圖像:
我想了解如何連接 label 中的字符串,使其看起來像:'error: 481.1'。 這是相關的代碼片段:
crossfilter = alt.selection(type='interval', encodings=['x'])
tick_up = alt.Chart().transform_filter(crossfilter).mark_tick(color='black').encode(
x = x,
y = alt.Y(plus_error+':Q', aggregate='sum'))
text = tick_up.mark_text(
align='left',
baseline='middle',
dx=12
).encode(text='sum(error):Q')
當我嘗試將.encode(text='sum(error):Q')
更改為類似.encode(text='"error": sum(error):Q')
時,它會拋出一個錯誤,是否有簡單的方法來做到這一點? 我也嘗試過使用transform_calculate
,但我需要一些適應crossfilter
選擇的東西。
我還想學習如何創建具有多行的 label,例如:
curr_error: 123.1
previous_error: 110
您可以在transform_calculate
中使用+
來連接字符串和數字。 我相信您還需要transform_joinaggregate
才能在計算轉換中訪問您的總和。 像這樣的東西:
import altair as alt
from vega_datasets import data
source = data.cars()
chart = alt.Chart(source).mark_text(align='left', dx=2).encode(
x='sum(Horsepower)',
y='Origin',
text='label:N'
).transform_joinaggregate(
sum_hp = 'sum(Horsepower)',
groupby=['Origin']
).transform_calculate(
label = "'error: ' + datum.sum_hp"
)
chart.mark_bar() + chart
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.