在 Altair 中向散点图添加 R 值(相关性)
Adding R-value (correlation) to scatter chart in Altair
所以我正在研究汽车数据集,并希望将 R 值添加到散点图中。所以我可以使用此代码生成一个散点图,使用 transform_regression
添加一条很棒的回归线。
from vega_datasets import data
import altair as alt
import pandas as pd
import numpy as np
cars = data.cars()
chart = alt.Chart(cars).mark_circle().encode(
alt.X('Miles_per_Gallon', scale=alt.Scale(domain=(5,50))),
y='Weight_in_lbs'
)
chart + chart.transform_regression('Miles_per_Gallon','Weight_in_lbs').mark_line()
这是图表
然后我正在寻找 R 值。因此可以将 pandas 与此代码一起使用,因为我不确定如何使用 Altair 获取 R 值。
corl = cars[['Miles_per_Gallon','Weight_in_lbs']].corr().iloc[0,1]
corl
现在我想知道如何在图表上添加 R 值作为一种标签?
您可以通过添加文本层来实现:
text = alt.Chart({'values':[{}]}).mark_text(
align="left", baseline="top"
).encode(
x=alt.value(5), # pixels from left
y=alt.value(5), # pixels from top
text=alt.value(f"r: {corl:.3f}"),
)
chart + text + chart.transform_regression('Miles_per_Gallon','Weight_in_lbs').mark_line()
在未来的 Altair 版本中,将不再需要图表中的空数据。
所以我正在研究汽车数据集,并希望将 R 值添加到散点图中。所以我可以使用此代码生成一个散点图,使用 transform_regression
添加一条很棒的回归线。
from vega_datasets import data
import altair as alt
import pandas as pd
import numpy as np
cars = data.cars()
chart = alt.Chart(cars).mark_circle().encode(
alt.X('Miles_per_Gallon', scale=alt.Scale(domain=(5,50))),
y='Weight_in_lbs'
)
chart + chart.transform_regression('Miles_per_Gallon','Weight_in_lbs').mark_line()
这是图表
然后我正在寻找 R 值。因此可以将 pandas 与此代码一起使用,因为我不确定如何使用 Altair 获取 R 值。
corl = cars[['Miles_per_Gallon','Weight_in_lbs']].corr().iloc[0,1]
corl
现在我想知道如何在图表上添加 R 值作为一种标签?
您可以通过添加文本层来实现:
text = alt.Chart({'values':[{}]}).mark_text(
align="left", baseline="top"
).encode(
x=alt.value(5), # pixels from left
y=alt.value(5), # pixels from top
text=alt.value(f"r: {corl:.3f}"),
)
chart + text + chart.transform_regression('Miles_per_Gallon','Weight_in_lbs').mark_line()
在未来的 Altair 版本中,将不再需要图表中的空数据。