簡體   English   中英

在 Altair 的條形圖 label 中組合字符串和聚合 function

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM