首页 > 解决方案 > Vega lite 选择 N 个对象(计数)

问题描述

我刚开始使用 Vega lite,想知道如何在我的第 10 个对象之后删除所有内容(我有数千行,我只对前 10 个感兴趣)。

这是我到目前为止所拥有的:

{
  "$schema": "https://vega.github.io/schema/vega-lite/v4.json",
  "data": {
    "url": "https://raw.githubusercontent.com/DanStein91/Info-vis/master/anage.csv",
    "format": {
      "type": "csv"
    }
  },
  "transform": [
    {
      "filter": {
        "field": "Female_maturity_(days)",
        "gt": 0
                }
    }

  ],
  "title": {
    "text": "",
    "anchor": "middle"
  },
  "mark": "bar",
  "encoding": {
    "y": {
      "field": "Common_name",
      "type": "nominal",
      "sort": {
        "op": "mean",
        "field": "Female_maturity_(days)",
        "order": "descending"
      }
    },
    "x": {
      "field": "Female_maturity_(days)",
      "type": "quantitative"
    }
  },
  "config": {}
}

标签: vega-lite

解决方案


您可以按照文档中的Filtering Top K Items示例进行操作。结果看起来像这样(在 vega 编辑器中查看):

{
  "data": {
    "url": "https://raw.githubusercontent.com/DanStein91/Info-vis/master/anage.csv",
    "format": {"type": "csv", "parse": {"Female_maturity_(days)": "number"}}
  },
  "transform": [
    {
      "window": [{"op": "rank", "as": "rank"}],
      "sort": [{"field": "Female_maturity_(days)", "order": "descending"}]
    },
    {"filter": "datum.rank <= 10"}
  ],
  "mark": "bar",
  "encoding": {
    "y": {
      "field": "Common_name",
      "type": "nominal",
      "sort": {
        "op": "mean",
        "field": "Female_maturity_(days)",
        "order": "descending"
      }
    },
    "x": {"field": "Female_maturity_(days)", "type": "quantitative"}
  },
  "title": {"text": "", "anchor": "middle"}
}

在此处输入图像描述

注意:在对 CSV 数据(而不是 JSON 数据)进行转换时,使用format.parse为列指定所需的数据类型很重要:默认情况下,CSV 列被解释为字符串,这可能导致基于排序以意想不到的方式表现的操作。


推荐阅读