elasticsearch - 如何使图表 c 两种类型:正常和堆叠?
解决方案
您可以使用具有条形图而不是柱形图的 2 层。第一层将是一个堆叠层,其中应用了过滤器used
和free
字段。第二层可以有total
场。使用xOffset
您可以定位两个条形图。请参阅下面的代码或编辑器:
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"config": {"view": {"stroke": "transparent"}, "axis": {"domainWidth": 1}},
"width": 300,
"data": {
"values": [
{"branch": "V", "free": 300, "used": 800, "total": 1000},
{"branch": "K", "free": 100, "used": 400, "total": 500},
{"branch": "D", "free": 100, "used": 200, "total": 300}
]
},
"transform": [
{"calculate": "[ datum.used, datum.free, datum.total]", "as": "table"},
{"calculate": "['used', 'free', 'total']", "as": "headline"},
{"flatten": ["table", "headline"]},
{
"calculate": "datum.headline +':'+ datum.table + ' ('+round(datum.table *100/ datum.total)+'%)'",
"as": "tooltip"
}
],
"encoding": {
"y": {"aggregate": "sum", "field": "table", "axis": {"grid": false}},
"x": {
"field": "branch",
"axis": {"grid": false, "domain": false, "labelAngle": 0, "ticks": false},
"sort": {"op": "sum", "field": "table", "order": "descending"}
},
"tooltip": {"field": "tooltip", "type": "nominal"},
"color": {
"field": "headline",
"type": "nominal",
"scale": {"range": ["#409b66", "#878787", "#1b5c9e"]}
}
},
"layer": [
{
"transform": [
{"filter": {"field": "headline", "oneOf": ["used", "free"]}}
],
"mark": {"type": "bar", "width": 15, "xOffset": -10}
},
{
"mark": {"type": "bar", "width": 15, "xOffset": 8},
"encoding": {
"y": {"field": "total", "axis": {"grid": false}, "stack": false}
}
}
]
}
推荐阅读
- javascript - 将反应虚拟化表从 javascript 转换为 typescript - 类型问题
- lua - 如何使用 pandoc 与 lua-filters 对齐文本?
- python - 在发送 Python smtplib 之前检查电子邮件的完整大小
- python - 如何在python列表中找到除0之外的任何数字的第一个索引?
- php - 如何在 Laravel Blade @each 中获得迭代值?
- minikube - 节点容器无法从 minikube 但从本地机器连接到 atlas 集群
- asp.net - 适用于 Google Chrome 和 Edge 的 Windows Kerberos 身份验证
- amazon-web-services - 在 AWS 架构中限制外部 API 调用
- xamarin.forms - 从左方向进行页面导航
- android - Firebase 通知使我的应用程序在前台崩溃