繁体   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