簡體   English   中英

Altair:帶有圖例和自定義的分層折線圖 Colors

[英]Altair: Layered Line Chart with Legend and Custom Colors

我在 Altair 中創建了一個帶有 2 條線的分層折線圖,每條線都有一個自定義顏色。 我想為此添加一個圖例。 我的原始代碼(沒有圖例)如下所示:

source = df

line1 = alt.Chart(source).mark_line().encode(
    x='Date:T', 
    y='FeatureOne:Q', 
    color= alt.value('gold')
)

line2 = alt.Chart(source).mark_line().encode(
    x='Date:T', 
    y=alt.Y('FeatureTwo:Q', title='Value'), 
    color= alt.value('red')
)

line1 + line2

這是可視化:

在此處輸入圖像描述

我想為此添加一個傳說,謝天謝地,之前對此有一個很好的答案

但是,我想不通的是如何使用圖例,同時保持自定義顏色。 我只能做其中之一。 有沒有辦法做到這兩點? 例如,如果我按照上面鏈接的答案中的代碼進行操作,我的代碼如下所示:

source = df

line1 = alt.Chart(source).mark_line().transform_fold(
    fold=['FeatureOne'], 
    as_=['variable', 'value']
).encode(
    x='Date:T', 
    y='FeatureOne:Q', 
#     color= alt.value('gold')
    color='variable:N'
)

line2 = alt.Chart(source).mark_line().transform_fold(
    fold=['FeatureTwo'], 
    as_=['variable', 'value']
).encode(
    x='Date:T', 
    y=alt.Y('FeatureTwo:Q', title='Value'), 
#     color= alt.value('red')
    color='variable:N'
)

line1 + line2

這給了我一個帶有圖例的分層折線圖,但我無法設置線條的顏色。 所以它看起來有點像這樣:

在此處輸入圖像描述

我將如何更改它,以便在我的第一個示例中獲得自定義行 colors:

color= alt.value('red')

同時也在做傳奇:

color='variable:N'

有沒有同時做這兩件事的好方法?

您可以像這樣定義自定義色階:

scale = alt.Scale(domain=['FeatureOne', 'FeatureTwo'], range=['gold', 'red'])

然后將此比例傳遞給圖表中的一種或兩種顏色編碼:

color=alt.Color('variable:N', scale=scale)

但請注意,如果您已經在使用折疊變換,則沒有理由手動進行分層; 這應該可以同時繪制兩條線:

alt.Chart(source).mark_line().transform_fold(
    fold=['FeatureOne', 'FeatureTwo'], 
    as_=['variable', 'value']
).encode(
    x='Date:T', 
    y='value:Q',
    color=alt.Color('variable:N', scale=scale)
)

暫無
暫無

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

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