Дуги, упорядоченные по размеру в круговой диаграмме vega-lite

#vega-lite

#vega-lite

Вопрос:

Я пытаюсь создать круговую диаграмму, в которой дуги упорядочены по размеру (по часовой стрелке), но не могу понять, как это сделать.

Кажется, что аргумент «сортировать» в «theta» указывает на порядок «color» по умолчанию, например:

 {
  "$schema": "https://vega.github.io/schema/vega-lite/v4.json",
  "description": "A pie chart",
  "data": {
    "values": [
      {"category": "Category 1", "value": 4},
      {"category": "Category 2", "value": 8},
      {"category": "Category 4", "value": 25},
      {"category": "Category 0", "value": 12}
    ]
  },
  "encoding": {
    "color": {"field": "category", "type": "nominal"},
    "theta": {"field": "value", "type": "quantitative", "sort": "descending"}
  },
  "layer": [
    {"mark": {"type": "arc", "outerRadius": 85}}
  ],
  "view": {"stroke": null}
}
 

вот результат: дуги упорядочены по обратному названию категории

Я могу отсортировать легенду («цвет») по «значению», но независимо от того, что я указываю для «сортировки» «тета», дуги не будут отсортированы по размеру «значения».

 {
  "$schema": "https://vega.github.io/schema/vega-lite/v4.json",
  "description": "A pie chart",
  "data": {
    "values": [
      {"category": "Category 1", "value": 4},
      {"category": "Category 2", "value": 8},
      {"category": "Category 4", "value": 25},
      {"category": "Category 0", "value": 12}
    ]
  },
  "encoding": {
  "color": {"field": "category", "type": "nominal", "sort": {"field" :"value", "order": "ascending"}},
  "theta": {"field": "value", "type": "quantitative", "sort": "descending"}
  },
  "layer": [
    {"mark": {"type": "arc", "outerRadius": 85}}
  ],
  "view": {"stroke": null}
}
 

это результат: легенда упорядочена, дуги по-прежнему имеют тот же порядок

Ответ №1:

Похоже, вам нужна order кодировка. Например (открыть в редакторе):

 {
  "$schema": "https://vega.github.io/schema/vega-lite/v4.json",
  "description": "A pie chart",
  "data": {
    "values": [
      {"category": "Category 1", "value": 4},
      {"category": "Category 2", "value": 8},
      {"category": "Category 4", "value": 25},
      {"category": "Category 0", "value": 12}
    ]
  },
  "encoding": {
    "color": {"field": "category", "type": "nominal"},
    "theta": {"field": "value", "type": "quantitative", "stack": true},
    "order": {"field": "value", "type": "quantitative", "sort": "descending"}
  },
  "layer": [
    {"mark": {"type": "arc", "outerRadius": 85}}
  ],
  "view": {"stroke": null}
}
 

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

Комментарии:

1. Спасибо! Именно то, что я искал! Но что делает «стек»? Я получаю одну и ту же диаграмму с ней и без нее…

2. Значение True по умолчанию для stack, поэтому вы можете не указывать его, если хотите.

3. Привет! Есть ли способ отсортировать элементы легенды соответствующим образом? Спасибо!!