Добавление R-значения (корреляции) к точечной диаграмме в Altair - PullRequest
1 голос
/ 17 апреля 2020

Итак, я играю с набором данных Cars и собираюсь добавить 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()

Вот диаграмма

enter image description here

Тогда я ищу получить R-значение. Поэтому я могу использовать pandas с этим кодом, поскольку я не уверен, как получить R-значение с помощью Altair.

corl = cars[['Miles_per_Gallon','Weight_in_lbs']].corr().iloc[0,1]
corl

Теперь мне было интересно, как бы я go добавил R-значение на диаграмма как своего рода метка?

1 Ответ

1 голос
/ 17 апреля 2020

Вы можете сделать это, добавив текстовый слой:

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()

enter image description here

В будущих версиях Altair пустые данные в диаграмме будут больше не требуется.

...