как контролировать порядок групп на гистограмме Vega-lite с накоплением

Для гистограммы с накоплением, такой как в этом примере: https://vega.github.io/editor/?#/examples/vega-lite/stacked_bar_weather

Я хочу контролировать порядок элементов в агрегации, чтобы, например, «туман» появлялся внизу, а затем «солнце» и т. Д. Возможно ли это?

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

Спасибо


person henryw374    schedule 21.05.2020    source источник
comment
примечание: я вижу, что по умолчанию они располагаются в алфавитном порядке   -  person henryw374    schedule 21.05.2020


Ответы (1)


Вы можете контролировать порядок стека с помощью кодировки order: см. https://vega.github.io/vega-lite/docs/stack.html#sorting-stack-order.

К сожалению, это позволяет сортировать только по значению поля, а не по явному порядку, как вы хотите здесь. Обходной путь - использовать вычислить преобразование, чтобы превратить ваш явный заказ в поле (просмотреть в редакторе):

{
  "$schema": "https://vega.github.io/schema/vega-lite/v4.json",
  "data": {"url": "data/seattle-weather.csv"},
  "transform": [
    {
      "calculate": "indexof(['sun', 'fog', 'drizzle', 'rain', 'snow'], datum.weather)",
      "as": "order"
    }
  ],
  "mark": "bar",
  "encoding": {
    "x": {
      "timeUnit": "month",
      "field": "date",
      "type": "ordinal",
      "axis": {"title": "Month of the year"}
    },
    "y": {"aggregate": "count", "type": "quantitative"},
    "color": {
      "field": "weather",
      "type": "nominal",
      "scale": {
        "domain": ["sun", "fog", "drizzle", "rain", "snow"],
        "range": ["#e7ba52", "#c7c7c7", "#aec7e8", "#1f77b4", "#9467bd"]
      },
      "legend": {"title": "Weather type"}
    },
    "order": {"field": "order", "type": "ordinal"}
  }
}

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

person jakevdp    schedule 21.05.2020