vega-lite - 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": {}
}
解决方案
您可以按照文档中的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 列被解释为字符串,这可能导致基于排序以意想不到的方式表现的操作。
推荐阅读
- c++ - std::vector 的有效子集
- javascript - 如何使用 MomentJS 找到两个 Unix 日期(以天为单位)之间的确切持续时间?
- google-cloud-platform - GCP Cloud Composer - 无法创建环境
- django - 将 Django 应用程序移动到另一台机器后无法找到 URL
- go - Cobra MarkPersistentFlagRequired 在 Root 上不起作用
- vaadin - Vaadin 和 CAS:如何重定向“/”路由?
- c# - 运行没有等待的任务方法
- jenkins - 捕获詹金斯中每个管道阶段所花费的时间
- java - 如何在 XML 文件中写入可序列化对象而不覆盖文件?SAXParseException
- java - 如何从我的 Maven War 构建中排除文件夹/文件?