Как динамически добавлять / изменять / исправлять данные диаграммы Altair? - PullRequest
1 голос
/ 19 апреля 2020

Я хотел бы добавить диаграмму (и) или данные к существующей диаграмме динамически (через ipywidget.interact), как показано в коде ниже (chart + dotchart). Я получаю почти то, что хочу, за исключением того, что вся диаграмма перерисовывается, и это вызывает мерцание.

Как динамически добавлять / изменять / исправлять данные и избегать перерисовки всей диаграммы?

Спасибо!

import pandas as pd
import numpy as np
import altair as alt
from ipywidgets import interact

df = pd.DataFrame({"xval": range(100), "yval": np.random.randint(0,100,100)})
chart = alt.Chart(df).mark_point().encode(x="xval", y="yval",)

def update(x, y):
    dot = pd.DataFrame(dict(x=[x], y=[y]))
    dotchart = alt.Chart(dot).mark_point().encode(x="x", y="y", color=alt.value("red"))
    return chart + dotchart 

interact(update, x=(0, 100), y=(0, 100))
# x, y widgets that control position of 'red dot'

1 Ответ

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

Единственный способ вставить данные в диаграмму Altair без повторного рендеринга - это Javascript, используя Vega View API . Вы можете увидеть пример этого здесь: https://vega.github.io/vega-lite/tutorials/streaming.html.

Я не знаю ни одной предыдущей работы по вызову API вида Vega из Python, но это в принципе возможно .

См. Запрос соответствующей функции Альтаира здесь: https://github.com/altair-viz/altair/issues/426.

...