如何解决使用 params=True 的 Altair 回归变换:如何在具有多个组时访问 r² 和 coeffs
我正在使用 transform_regression
在图表中创建回归线和相应的方程文本。对于单个回归,这工作正常,但使用 set groupby=['something']
选项,文本会被绘制在彼此之上。
我尝试使用 lineBreak='\n'
构造字符串,但这没有帮助。
它还为名为 undefined
的方程创建了一个自己的颜色组,这不是很实用。有什么办法可以避免这种情况?我知道 this 问题,但我不想更改名称,我宁愿根本不给它自己的条目。
这是一个例子:
import altair as alt
import altair_transform
import pandas as pd
import numpy as np
np.random.seed(42)
x = np.linspace(0,10)
y = np.e ** (-0.1 *x) + np.random.randn(len(x)) / 5
group = np.random.choice(['a','b'],len(x))
df = pd.DataFrame({'x': x,'y': y,'group': group})
df.loc[df.group == 'a','y'] *= 0.1
chart = alt.Chart(df).mark_point().encode(
x='x',y= alt.Y('y',scale = alt.Scale(type= 'log')),color= 'group')
Reg_Line = chart.transform_regression('x','y',method="exp",groupby=["group"]
).mark_line()
Reg_Params = chart.transform_regression('x',groupby=["group"],params=True
).mark_text(align='left',lineBreak='\n'
).encode(
x=alt.value(150),# pixels from left
y=alt.value(250),# pixels from top
text='params:N'
).transform_calculate(
params='"r² = " + round(datum.rSquared * 100)/100 + \
" y = " + round(datum.coef[0] * 10)/10 + " + e ^ (" + \
round(datum.coef[1] * 10000)/10000 + "x" + ")" + \n + " "')
chart + Reg_Line + Reg_Params
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。