使用回归线快速可视化 Altair 中的多列

Quick way to visualise multiple columns in Altair with regression lines

所以我在 Altair 中快速可视化多列的方法是使用 repeat。这种方法是好的,直到我想使用 transform_regression 添加回归线或使用 mark_text 添加文本,因为它不允许我在使用 repeat.

时添加图层

Pandas 使用 df.corr 可以很容易地获得完整 df 的相关性,如果有一些快速的方法可以快速可视化 all/multiple 列会很棒。

示例代码:

import altair as alt
from vega_datasets import data
from altair.expr import datum

iris = data.iris()

chart = alt.Chart(iris).mark_circle().encode(
    alt.X(alt.repeat("column"), type='quantitative'),
    alt.Y(alt.repeat("row"), type='quantitative'),
    color='species:N'
).properties(
    width=100,
    height=100
).repeat(
    row=['sepalLength', 'sepalWidth', 'petalLength','petalWidth'],
    column=['petalWidth','petalLength', 'sepalWidth', 'sepalLength']
)

chart

这是代码的输出

所以我的问题是:有没有办法快速添加任何附加功能,例如使用 repeat 时的回归线?如果不是,在添加额外内容的同时快速可视化多列数据的最佳途径是什么?

代替重复,您可以使用两次折叠变换和一个 row/column 面,然后可以直接应用回归变换。这是一个例子:

import altair as alt
import pandas as pd

base = alt.Chart(iris).transform_fold(
    ['sepalLength', 'sepalWidth', 'petalLength','petalWidth'],
    as_=['key_x', 'value_x']
).transform_fold(
    ['sepalLength', 'sepalWidth', 'petalLength','petalWidth'],
    as_=['key_y', 'value_y']
).encode(
    x=alt.X('value_x:Q', title=None),
    y=alt.Y('value_y:Q', title=None),
).properties(
    width=100,
    height=100
)

alt.layer(
    base.mark_circle().encode(color='species:N'),
    base.transform_regression(
        'value_x', 'value_y',
        groupby=['key_x', 'key_y', 'species']
    ).mark_line(
        color='black'
    ).encode(
        detail='species:N'
    )
).facet(
    column=alt.Column('key_x:N', title=None),
    row=alt.Row('key_y:N', sort='descending')
).resolve_scale(
    x='independent',
    y='independent'
)

我复制并粘贴了上面的代码,但我得到的是一张包含所有点和线的图表,而不是上面显示的多张图表。