gpt4 book ai didi

javascript - json 到 D3js 对嵌套数组中的数据进行分组

转载 作者:行者123 更新时间:2023-11-28 08:42:56 25 4
gpt4 key购买 nike

我对使用 d3 和 json 做任何事情都很陌生。这是我试图从 json 中获取的一段数据,我只是想知道我是否走在正确的道路上。

基本上,每个状态组内都会有更多的服务器,而不仅仅是目前的一台服务器,其想法是获取一台服务器的矩形图,并将这些服务器整齐地排列在一起。

我一直在阅读大量教程并尝试浏览其他人可能遇到的类似问题,但到目前为止还没有运气......

我试图提取的 jSon 数据

[
{
"status": "ok",
"servers":
[
{
"id": "VR01",
"servername": "Server_1",
"cpu": 45, "mem": 25,
"diskIO": 0, "bandwith": 200
}

]
},
{
"status": "attention",
"servers":
[
{
"id": "VR10",
"servername": "Server_10",
"cpu": 55, "mem": 35,
"diskIO": 1, "bandwith": 2000
}
]

},
{
"status": "warning",
"servers":
[
{
"id": "VR02",
"servername": "Server_02",
"cpu": 98, "mem": 85,
"diskIO": 1,
"bandwith": 2000
}
]

},
{
"status": "dead",
"servers":
[
{
"id": "VR20",
"servername": "Server_20",
"cpu": 0, "mem": 0,
"diskIO": 0,
"bandwith": 0
}
]

}

]

D3 位

   <script> 

var width = ("width", 1000);
var height = ("height", 800);



d3.json("mydata.json", function(data) {

var canvas = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height)


var status = function sortData(data){

for (i = 0; i < d.length; i++) {

if(d.status ==="ok")
canvas.selectAll("rect")
.data(d.server)
.enter()
.append("rect")
.attr("x", 25)
.attr("y", function(d, i){return 25 * i;})
.attr("fill", "purple")
}

}



})
</script>

非常感谢您提出的任何建议!

最佳答案

我认为最好使用嵌套选择来创建仪表板。

// Create one group for each server group
var serverGroup = svg.selectAll('g')
.data(data)
.enter()
.append('g')
.attr('transform', function(d, i) { return 'translate(0, ' + 50 * i + ')');

// Create the inner elements for each group
var servers = serverGroup.selectAll('rect')
.data(function(d) { return d.servers; })
.enter()
.append('rect')
// ... more settings here ...

这将创建三组,每组一组服务器并垂直翻译每组。每个组都包含组数据,因此我们可以使用组数据在每个组内创建元素。此外,您还可以使用此结构为每个组添加标题、背景颜色和其他设置。本文包含解决问题所需的概念:How Selections Work 。问候,

关于javascript - json 到 D3js 对嵌套数组中的数据进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20287412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com