【问题标题】:altair: Access rSquared-value in a regressionaltair:在回归中访问 r 平方值
【发布时间】:2020-07-14 23:47:51
【问题描述】:

我正在使用这个例子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()

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

chart + chart.transform_regression('x', 'y', params=True).mark_text()

【问题讨论】:

    标签: python regression altair


    【解决方案1】:

    使用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
    

    【讨论】:

      【解决方案2】:

      如果您也对以表格形式访问回归参数感兴趣,可以使用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 源代码库上创建的 issue 的交叉帖子。希望其他人会觉得这很有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-11-09
        • 2011-08-01
        • 2020-12-14
        • 2020-09-20
        • 2018-08-20
        • 1970-01-01
        相关资源
        最近更新 更多