Altair:在回归中访问rSquared值

5

我正在使用这个例子https://altair-viz.github.io/user_guide/transform/regression.html 来在Altair中绘制回归趋势线。

import altair as alt
import pandas as pd
import numpy as np

np.random.seed(42)
x = np.linspace(0, 10)
y = x - 5 + np.random.randn(len(x))

df = pd.DataFrame({'x': x, 'y': y})

chart = alt.Chart(df).mark_point().encode(
    x='x',
    y='y'
)

chart + chart.transform_regression('x', 'y').mark_line()

enter image description here

此外,我想将rSquared值作为文本添加到图表中。我该如何访问这个值? 根据文档,应该是这样的:

chart + chart.transform_regression('x', 'y', params=True).mark_text()
2个回答

7

使用mark_text()时,您需要指定文本值的标签、x和y位置(或编码):

import altair as alt
import pandas as pd
import numpy as np

np.random.seed(42)
x = np.linspace(0, 10)
y = x - 5 + np.random.randn(len(x))

df = pd.DataFrame({'x': x, 'y': y})

chart = alt.Chart(df).mark_point().encode(
    x='x',
    y='y'
)
line = chart.transform_regression('x', 'y').mark_line()

params = alt.Chart(df).transform_regression(
    'x', 'y', params=True
).mark_text(align='left').encode(
    x=alt.value(20),  # pixels from left
    y=alt.value(20),  # pixels from top
    text='rSquared:N'
)

chart + line + params

enter image description here


5
如果您也有兴趣以表格形式访问回归参数,您可以使用altair_transfrom包中的实验性方法extract_data
import altair as alt
import pandas as pd
import numpy as np
import altair_transform

np.random.seed(42)
x = np.linspace(0, 10)
y = x - 5 + np.random.randn(len(x))

df = pd.DataFrame({'x': x, 'y': y})
chart = alt.Chart(df).mark_point().encode(
    x='x',
    y='y'
)

b  = chart.transform_regression('x', 'y', params=True).mark_line()
print(altair_transform.extract_data(b))
#                                        coef  rSquared
# 0  [-4.935556907797029, 0.9420166005081777]  0.903174

这是我在托管于git的Altair源代码仓库上创建的问题的转载。希望其他人也会发现这个有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接