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