簡體   English   中英

在 Altair 的折線圖末尾添加標簽

[英]Adding labels at end of line chart in Altair

所以我一直在努力讓它在每一行的末尾都有一個 label 給出國家的名稱,然后我可以刪除圖例。 試過玩transform_filter但沒有運氣。

我使用了這里的數據https://ourworldindata.org/coronavirus-source-data我清理並重塑了數據,所以它看起來像這樣:-

    index   days    date    country value
0   1219    0   2020-03-26  Australia   11.0
1   1220    1   2020-03-27  Australia   13.0
2   1221    2   2020-03-28  Australia   13.0
3   1222    3   2020-03-29  Australia   14.0
4   1223    4   2020-03-30  Australia   16.0
5   1224    5   2020-03-31  Australia   19.0
6   1225    6   2020-04-01  Australia   20.0
7   1226    7   2020-04-02  Australia   21.0
8   1227    8   2020-04-03  Australia   23.0
9   1228    9   2020-04-04  Australia   30.0
import altair as alt

countries_list = ['Australia', 'China', 'France', 'Germany', 'Iran', 'Italy','Japan', 'South Korea', 'Spain', 'United Kingdom', 'United States']

chart = alt.Chart(data_core_sub).mark_line().encode(
                                            alt.X('days:Q'),
                                            alt.Y('value:Q', scale=alt.Scale(type='log')),
                                            alt.Color('country:N', scale=alt.Scale(domain=countries_list,type='ordinal')),    
                                        )

labels = alt.Chart(data_core_sub).mark_text().encode(
                                            alt.X('days:Q'),
                                            alt.Y('value:Q', scale=alt.Scale(type='log')),
                                            alt.Text('country'),
                                            alt.Color('country:N', legend=None, scale=alt.Scale(domain=countries_list,type='ordinal')), 
                                        ).properties(title='COVID-19 total deaths', width=600)
                                        

alt.layer(chart, labels).resolve_scale(color='independent')

這是圖表當前的混亂情況。

在此處輸入圖像描述

我如何 go 只顯示最后一個“國家”名稱?

編輯

這是結果。 我可能會考慮單獨調整一些國家/地區,因為作為一個整體進行調整意味着無論我用dxdy alignment 做什么,一些標簽總是位置不佳。

在此處輸入圖像描述

您可以通過聚合 x 和 y 編碼來做到這一點。 您希望文本處於最大 x 值,因此您可以在 x 中使用'max'聚合。 對於 y 值,您希望 y 值與最大 x 值相關聯,因此您可以使用{"argmax": "x"}聚合。

對文本 alignment 稍作調整,結果如下所示:

labels = alt.Chart(data_core_sub).mark_text(align='left', dx=3).encode(
    alt.X('days:Q', aggregate='max'),
    alt.Y('value:Q', aggregate={'argmax': 'days'}, scale=alt.Scale(type='log')),
    alt.Text('country'),
    alt.Color('country:N', legend=None, scale=alt.Scale(domain=countries_list,type='ordinal')), 
).properties(title='COVID-19 total deaths', width=600)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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