Как я могу динамически изменять схему Vega

У меня есть следующий код в Vega lite. Я хочу изменить фильтр преобразования 1850 на 2000. Пожалуйста, предложите, как я могу изменить фильтр преобразования схемы. Если возможно, есть ли какой-либо образец примера для динамического изменения данных и просмотра обновлений. Данные по населению взяты из https://vega.github.io/editor/data/population.json

var yourVlSpec = {
    "$schema": "https://vega.github.io/schema/vega-lite/v2.json",
    "data": {
        "url": "https://vega.github.io/editor/data/population.json",
        "format": {
            "type": "json"
        }
    },
    "transform": [
      {
          "filter": "datum.year == 1850"
      }
    ],
    "mark": "bar",
    "encoding": {
        "x": {
            "aggregate": "sum",
            "field": "people",
            "type": "quantitative",
            "axis": {
                "title": "population"
            }
        }
    },
    "config": {
        "scale": {
            "rangeStep": 21
        }
    }
}

vegaEmbed('#vis', yourVlSpec).then(function (result) {
    result.spec.transform[0] = '{filter: "datum.year == 2000"}';

}).catch(console.error);
<html>
  <head>
    <title>Embedding Vega-Lite</title>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]"></script>
  </head>
  <body>
    <div id="vis"></div>
    <div id="view"></div>
  </body>
</html>


person Vishal Bedre    schedule 05.02.2018    source источник


Ответы (1)


Вы можете добиться этого с помощью выбора (https://vega.github.io/vega-lite/docs/selection.html) и фильтр на основе этого выбора (https://vega.github.io/vega-lite/docs/filter.html#selection-predicate). Если это не вариант, вам нужно будет использовать Vega Signals и Vega View API.

person dominik    schedule 11.02.2018