黄土标线图例

2024-05-29 11:24:15 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的示例数据集说明了有关格式的问题

import altair as alt
from vega_datasets import data

source = data.cars()

x = alt.Chart(source).mark_circle(size=60).encode(
    x='Horsepower',
    y='Miles_per_Gallon',
    color='Origin',
    )

x + x.transform_loess('Horsepower', 'Miles_per_Gallon').mark_line()

enter image description here

  1. 如何更改右侧彩色图例中“未定义”黄土标绘线的名称

  2. 有没有办法在保留“欧洲、日本和美国”的同时,删除黄土标绘线的图例

我似乎无法为mark_line()找到合适的“标记属性”标志,并且无法传递legend=None

PS:由于这个图表需要与Alt.vconcat/hconcat相结合,我认为它需要发生在基础层面


Tags: 数据import示例sourcedatalinealtmark
1条回答
网友
1楼 · 发布于 2024-05-29 11:24:15

首先要知道的是,图例来自编码:如果您不希望字段出现在颜色图例中,请不要给它颜色编码。如果您确实希望它出现,请给它一个颜色编码,以反映您希望在图例中出现的内容

当您编写类似x.transform_loess(...)的内容时,生成的图表将继承x中定义的所有编码。黄土变换生成的新数据集只包含目标变量,因此color='Origin'编码指向未定义的列

如果希望未定义的列不出现在图例中,请避免对转换后的图表进行颜色编码:

x = alt.Chart(source).mark_circle(size=60).encode(
    x='Horsepower',
    y='Miles_per_Gallon',
)

x.encode(color='Origin') + x.transform_loess('Horsepower', 'Miles_per_Gallon').mark_line()

enter image description here

另一方面,如果希望图例说明其他内容,则需要一列用于颜色编码,可以使用计算变换创建该列:

x = alt.Chart(source).mark_circle(size=60).encode(
    x='Horsepower',
    y='Miles_per_Gallon',
    color='Origin'
)

x + x.transform_loess(
        'Horsepower', 'Miles_per_Gallon'
    ).transform_calculate(
        Origin='" LOESS"'
    ).mark_line()

enter image description here

相关问题 更多 >

    热门问题