plot - VegaLite - 根据值自定义标签轴
问题描述
我正在尝试使用 VegaLite 绘制树状图。情节几乎完成了,但只有一件事混合在一起,即与点 id 对应的轴标签。在我绘制的图中,轴从 1 到 40 排序。我有一个带有相应标签的字典,例如,如果值为 1,则标签为“point10”,如果值为 30,则标签为“point5”,依此类推. 因此,我想做的是替换标签的数字。
是否可以在 VegaLite 中做到这一点?我还没有通过阅读文档找到方法。
解决方案
您可以只提供pointLabels
x 轴中的字段,然后提供带有字段的排序value
,这样您就可以将 pointLabels 视为标签,并且将根据您的值显示排序。请参阅下面的Name
字段排序示例或检查编辑器。
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"description": "Drag a rectangular brush to show (first 20) selected points in a table.",
"data": {"url": "data/cars.json"},
"transform": [
{"window": [{"op": "row_number", "as": "row_number"}]},
{"calculate": "'My'+datum.Name", "as": "alias"}
],
"params": [{"name": "brush", "select": "interval"}],
"mark": "bar",
"encoding": {
"x": {
"field": "Name",
"type": "nominal",
"stack": false,
"sort": {"field": "row_number", "order": "ascending"}
},
"y": {"field": "Miles_per_Gallon", "stack": false, "type": "quantitative"},
"color": {
"condition": {"param": "brush", "field": "Cylinders", "type": "ordinal"},
"value": "grey"
}
}
}
推荐阅读
- java - 如何在 Appium 中列出列表中的所有元素
- python - 将文本从一个单元格复制到另一个单元格而不删除原始内容python
- git - 无法 ping github,但可以在我的工作场所通过浏览器访问 github。我运气不好?
- flutter - Flutter 错误原因:SocketException: Failed to create server socket (OS Error: Failed to start accept), address = localhost, port = xxxx
- python - Altair 生成带有水平连接表的水平条形图
- ios - 尝试制作 UIAlertController,似乎无法初始化
- xamarin - 设置 BindingContext 后调用 Xamarin 表单的 Prism Initialize
- automation - 通过自动完成相同的工作
- python - 需要两个参数或都不使用 argparse
- php - 使用 uasort() php 按多个条件排序