vega-lite - 是否可以有带有灰色弧线的圆环图列指示缺失的部分?
问题描述
目前,圆环图假定最大值为 100%。我想要的是中文类别的百分比为 50%,灰色弧线表示缺失的 50%。其他两个圆环图在各自列中的行为相似。
{
"$schema": "https://vega.github.io/schema/vega-lite/v4.json",
"description": "A simple donut chart with embedded data.",
"data": {
"values": [
{"category": "English", "value": 4},
{"category": "Malay", "value": 6},
{"category": "Chinese", "value": 10}
]
},
"mark": {"type": "arc", "innerRadius": 80},
"encoding": {
"column": {"field": "category"},
"theta": {"field": "value", "type": "quantitative"},
"color": {"field": "category", "type": "nominal"}
},
"view": {"stroke": null}
}
解决方案
它有点复杂,但一种方法是使用转换来计算总数,然后使用层图在背景中绘制该总数。
这是一个示例(在编辑器中打开):
{
"data": {
"values": [
{"category": "English", "value": 4},
{"category": "Malay", "value": 6},
{"category": "Chinese", "value": 10}
]
},
"transform": [
{"joinaggregate": [{"op": "sum", "field": "value", "as": "total"}]}
],
"facet": {"column": {"field": "category"}},
"spec": {
"layer": [
{
"mark": {"type": "arc", "innerRadius": 80, "color": "lightgray"},
"encoding": {"theta": {"field": "total", "type": "quantitative"}}
},
{
"mark": {"type": "arc", "innerRadius": 80},
"encoding": {
"theta": {"field": "value", "type": "quantitative"},
"color": {"field": "category"}
}
}
],
"view": {"stroke": null}
}
}
推荐阅读
- python - 为什么我不能使用 pypi 安装我的包并且我有错误?
- nginx - 如何选择性地使用 nginx proxy_pass 传递子路径?
- angularjs - 在 ng-options 中排除值
- haskell - do 块中的 Haskell 递归不起作用(递归在列表理解中)
- php - 未定义变量:在视图中
- python - Keras 模型:验证 acc 在 train 与 val 图中混乱地摇晃
- c# - 如何在递增的数字范围之间找到缺失的数字?
- youtube-api - 获取从使用 Youtube api 的帐户管理的频道列表?
- javascript - 如何使 Jinja2 中的 tojson() 过滤器输出 Unicode 而不是转义序列?
- azure - 为什么我可以轻松拥有 100 个 Web 应用程序,这些应用程序在我的本地计算机上几乎不做任何事情,但在 Azure 应用服务上却不行?