Vega lite сверху и снизу 10

Мне было интересно, можно ли в Vega lite отображать как верхние, так и нижние 10 объектов (количественные) рядом друг с другом.

Я знаю, как получить их по отдельности, но не то и другое одновременно:

 "transform": [
    {
      "window": [{"op": "rank", "as": "rank"}],
      "sort": [{"field": "Days_to_maturity", "order": "descending"}]
    },
    {"filter": "datum.rank <= 10"}
  ],

person Daniel    schedule 14.03.2020    source источник


Ответы (1)


Да, можно сделать что-то вроде этого:

  "transform": [
    {
      "window": [{"op": "rank", "as": "rank"}],
      "sort": [{"field": "Days_to_maturity", "order": "descending"}]
    },
    {"joinaggregate": [{"op": "max", "field": "rank", "as": "total"}]}
    {"filter": "(datum.rank <= 10) || (datum.rank > datum.total - 10)"}
  ],

Обратите внимание, что агрегат rank будет давать равные значения с одинаковым рангом, поэтому он может не отображать ровно 10 на каждом конце, если в ваших данных есть повторяющиеся значения. Если вы хотите просто отображать первые и последние 10 строк независимо от дубликатов, вы можете перейти в окно count с помощью ignorePeers:

  "transform": [
    {
      "window": [{"op": "count", "as": "rank"}],
      "sort": [{"field": "Days_to_maturity", "order": "descending"}],
      "ignorePeers": true
    },
    {"joinaggregate": [{"op": "max", "field": "rank", "as": "total"}]},
    {"filter": "(datum.rank <= 10) || (datum.rank > datum.total - 10)"}
  ],

Дополнительную информацию о параметрах преобразования окна можно найти в документах по преобразованию окна .

person jakevdp    schedule 14.03.2020
comment
Спасибо, просто интересно, есть ли способ разделить их на два графика? один сверху, а другой снизу. - person Daniel; 14.03.2020
comment
Конечно, вы можете объединить два представления данных, одно из которых фильтрует верхние 10 и тот, который фильтрует нижние 10. - person jakevdp; 14.03.2020
comment
Значит, вы можете делать hconcat или vconcat отдельно с другим фильтром? Как бы это выглядело? Благодарю. Я продолжаю искать в Интернете, но vega lite дает 0 примеров. - person Daniel; 14.03.2020
comment
Это другая тема, чем исходный вопрос, и для нее требуется больше места, чем доступно в ветке комментариев. Предлагаю открыть новый вопрос. - person jakevdp; 14.03.2020