Vega lite: наличие двух отдельных наборов данных с отдельными фильтрами - PullRequest
1 голос
/ 14 марта 2020

Мне было интересно, как у меня может быть что-то вроде hconcat в vega lite, но с двумя отдельными наборами данных. Я хочу, чтобы верхние 10 и нижние 10 отображались рядом друг с другом с различными ограничениями, но у меня возникли проблемы с фильтром.

1 Ответ

1 голос
/ 14 марта 2020

Данные и преобразования можно указывать на любом уровне диаграммы, и при необходимости они передаются во вспомогательные диаграммы. Вот пример, адаптированный из Фильтрация верхних элементов K в галерее примеров, который применяет различные фильтры к каждой объединенной диаграмме ( просмотр в редакторе ):

{
  "data": {
    "values": [
      {"student": "A", "score": 100},
      {"student": "B", "score": 56},
      {"student": "C", "score": 88},
      {"student": "D", "score": 65},
      {"student": "E", "score": 45},
      {"student": "F", "score": 23},
      {"student": "G", "score": 66},
      {"student": "H", "score": 67},
      {"student": "I", "score": 13},
      {"student": "J", "score": 12},
      {"student": "K", "score": 50},
      {"student": "L", "score": 78},
      {"student": "M", "score": 66},
      {"student": "N", "score": 30},
      {"student": "O", "score": 97},
      {"student": "P", "score": 75},
      {"student": "Q", "score": 24},
      {"student": "R", "score": 42},
      {"student": "S", "score": 76},
      {"student": "T", "score": 78},
      {"student": "U", "score": 21},
      {"student": "V", "score": 46}
    ]
  },
  "transform": [
    {
      "window": [{"op": "rank", "as": "rank"}],
      "sort": [{"field": "score", "order": "descending"}]
    }
  ],
  "vconcat": [
    {
      "transform": [{"filter": "datum.rank <= 3"}],
      "mark": "bar",
      "encoding": {
        "x": {"field": "score", "type": "quantitative"},
        "y": {
          "field": "student",
          "type": "nominal",
          "sort": {"field": "score", "op": "average", "order": "descending"}
        }
      }
    },
    {
      "transform": [{"filter": "datum.rank > 19"}],
      "mark": "bar",
      "encoding": {
        "x": {"field": "score", "type": "quantitative"},
        "y": {
          "field": "student",
          "type": "nominal",
          "sort": {"field": "score", "op": "average", "order": "descending"}
        }
      }
    }
  ]
}

enter image description here

Точно так же, если вы хотите иметь разные источники данных в каждой вложенной диаграмме, вы можете указать свойство "data" в вложенных диаграммах.

...