使用回归线快速可视化 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'
)
我复制并粘贴了上面的代码,但我得到的是一张包含所有点和线的图表,而不是上面显示的多张图表。
所以我在 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'
)
我复制并粘贴了上面的代码,但我得到的是一张包含所有点和线的图表,而不是上面显示的多张图表。