Многослойная диаграмма Vega-Lite: как сделать так, чтобы деления и метки занимали всю ось?

Я работаю над многослойной диаграммой, на которой есть как столбцы, так и линии правил. Проблема, с которой я сталкиваюсь, заключается в том, что на оси X деления и метки деления появляются только под полосами и не охватывают всю ось, что делает так, что нет меток и меток под ними, где линии правил расположена. Вот пример того, что я вижу (ссылка на редактор Vega):

{
  "$schema": "https://vega.github.io/schema/vega-lite/v4.json",
  "data": {"url": "data/movies.json"},
  "transform": [
  {"calculate": "2*datum.IMDB_Rating", "as": "UpperLimit"}
  ],
  "layer": [
    {
      "mark": "bar",
      "encoding": {
        "x": {"bin": true, "field": "IMDB_Rating", "type": "quantitative"},
        "y": {"aggregate": "count", "type": "quantitative"}
      }
    },
    {
      "mark": "rule",
      "encoding": {
        "x": {
          "aggregate": "max",
          "field": "UpperLimit",
          "type": "quantitative"
        },
        "color": {"value": "red"},
        "size": {"value": 5}
      }
    }
  ]
}

Изображение проблемы

Как сделать так, чтобы отметки и метки охватывали всю ось? Заранее спасибо за помощь!


person alleykati    schedule 10.01.2020    source источник


Ответы (1)


Когда вы используете преобразование бункера в кодировке, Vega-Lite корректирует свойства оси по умолчанию, чтобы соответствовать биннингу. Вы можете изменить их вручную с помощью свойств кодировки scale и axis, но я думаю, что более простой способ - переместить преобразование бункера в спецификацию transform диаграммы. Ниже приведен пример (Редактор Vega):

{
  "$schema": "https://vega.github.io/schema/vega-lite/v4.json",
  "data": {"url": "data/movies.json"},
  "transform": [
    {"calculate": "2*datum.IMDB_Rating", "as": "UpperLimit"},
    {
      "bin": true,
      "field": "IMDB_Rating",
      "as": ["IMDB_Rating_0", "IMDB_Rating_1"]
    }
  ],
  "layer": [
    {
      "mark": "bar",
      "encoding": {
        "x": {
          "field": "IMDB_Rating_0",
          "type": "quantitative",
          "bin": "binned"
        },
        "x2": {"field": "IMDB_Rating_1"},
        "y": {"aggregate": "count", "type": "quantitative"}
      }
    },
    {
      "mark": "rule",
      "encoding": {
        "x": {
          "aggregate": "max",
          "field": "UpperLimit",
          "type": "quantitative"
        },
        "color": {"value": "red"},
        "size": {"value": 5}
      }
    }
  ]
}

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

person jakevdp    schedule 10.01.2020
comment
Есть ли шанс, что вы могли бы объяснить, как перенастроить его вручную с помощью свойств шкалы и оси кодировки? Я использую более сложный пример с использованием агрегированных данных ElasticSearch в Kibana, и мне не удается заставить все работать, когда я перемещаю биннинг в спецификацию преобразования. Поэтому я хотел бы вместо этого попробовать настроить свойства шкалы / оси. Большое спасибо! - person alleykati; 10.01.2020
comment
Я также должен упомянуть, что мы используем Kibana 6.8.0, который поддерживает только Vega-Lite v2 или Vega v4. - person alleykati; 10.01.2020