Альтаир - нарисуйте линию на графике, где x = y - PullRequest
1 голос
/ 11 июля 2020

Этот фрагмент:

chart = alt.Chart(df).mark_point(filled=True).encode(
      alt.X('Goals Conceded:Q'),
      alt.Y('Goals:Q'),
      alt.Size('Goals:Q', legend=None, scale=alt.Scale(range=[0, 1500])),
      alt.Color('Color', legend=None, scale=None),
      tooltip = [alt.Tooltip('For Team:N'),
                alt.Tooltip('Goals:Q'),
                alt.Tooltip('Goals Conceded:Q')]
      ).properties(
          width=800,
          height=600
      )

Графики:

enter image description here

Now I would like to manually add a line, where x = y, in order to get the following result:

введите описание изображения здесь

Как я могу это сделать?

1 Ответ

2 голосов
/ 12 июля 2020

Вы можете добавить фиктивную строку:

line = pd.DataFrame({
    'Goals Conceded': [0, 2],
    'Goals': [0, 2],
})

line_plot = alt.Chart(line).mark_line(color= 'red').encode(
    x= 'Goals Conceded',
    y= 'Goals'.
)

chart + line_plot

У меня нет вашего набора данных, поэтому ниже приведен пример, в основном заимствованный из Галерея примеров Альтаира :

import pandas as pd
import altair as alt
from vega_datasets import data

source = data.iris()

iris_plot = alt.Chart(source).mark_circle().encode(
    alt.X('sepalLength'),
    alt.Y('sepalWidth'),
    color='species',
    size='petalWidth'
)

line = pd.DataFrame({
    'sepalLength': [0, 5],
    'sepalWidth':  [0, 5],
})

line_plot = alt.Chart(line).mark_line(color= 'red').encode(
    x= 'sepalLength',
    y= 'sepalWidth',
)

iris_plot + line_plot

введите описание изображения здесь

...