簡體   English   中英

向 Altair 中的分層圖表添加圖例

[英]Adding legend to layerd chart in altair

考慮以下示例:

    import altair as alt
    from vega_datasets import data

    df = data.seattle_weather()

    temp_max = alt.Chart(df).mark_line(color='blue').encode(
        x='yearmonth(date):T',
        y='max(temp_max)',
    )

    temp_min = alt.Chart(df).mark_line(color='red').encode(
        x='yearmonth(date):T',
        y='max(temp_min)',
    )

    temp_max + temp_min

在生成的圖表中,我想添加一個圖例,顯示藍線顯示最高溫度,紅線顯示最低溫度。 實現這一目標的最簡單方法是什么?

我看到(例如在這個問題的解決方案中: Labeling Layered Charts in Altair (Python) ),如果在編碼中設置顏色大小左右,通常使用分類列,那么 altair 只會添加圖例,但事實並非如此在這里可能是因為我正在繪制整列,標簽應該是列名(現在顯示在 y 軸標簽中)。

我會做一個折疊變換,以便可以正確編碼變量。

import altair as alt
from vega_datasets import data

df = data.seattle_weather()

alt.Chart(df).mark_line().transform_fold(
    fold=['temp_max', 'temp_min'], 
    as_=['variable', 'value']
).encode(
    x='yearmonth(date):T',
    y='max(value):Q',
    color='variable:N'
)

在此處輸入圖片說明

如果您將兩個具有相同列的圖表分層並告訴它們按相同的顏色着色,則會出現圖例。 不知道這是否有幫助,但是..

例如,我有:


范圍、數量、類型

0_5, 3, '私人'

5_10, 5, '私人'


范圍、數量、類型

0_5, 3, '公共'

5_10, 5, '公共'


我用'color ='Type''繪制了兩個圖表並說alt.layer(chart1,chart2)它向我展示了一個正確的圖例

暫無
暫無

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

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