gpt4 book ai didi

json - d3.js,使用 d3.extent 查找嵌套 json 值的最小值/最大值

转载 作者:行者123 更新时间:2023-12-04 14:24:49 25 4
gpt4 key购买 nike

我正在 d3 中构建气泡图,并且我希望气泡的颜色基于我在本地 json 文件中的 logFC 值。

我的 json 文件如下所示:

{
"name": "genes",
"children": [
{
"value": "9.57E-06",
"logFC": "-5.51658163",
"symbol": "BCHE",
},
{
"value": "0.0227",
"logFC": "3.17853632",
"symbol": "GRIA2",
},
{
"value": "0.00212",
"logFC": "-2.8868275",
"symbol": "GRIN2A",
}
]
}

该文件不是平面的,这就是为什么我认为我无法使用 d3.extent 引用叶节点。我知道我可以使用:
var color1 = d3.scale.linear()
.domain([-5.51658163,3.17853632]) //manually putting in min/max into the domain
.range(["lightgreen", "green"]);

但是我的数据会发生变化,并且为了使代码动态化 - 我已经尝试了以下以及许多其他变体:
var color1 = d3.scale.linear()
.domain([d3.extent(d3.values(data, function(data) { return +d.logFC;}))])
.range(["lightgreen", "green"]);

基本上,我在叶节点上使用 d3.extent 时遇到问题。有没有一种简单的方法可以使用 d3.extent 找到最小值和最大值来查找 logFC 的最小值和最大值?

谢谢!

(PS如果括号有任何问题,这是我在将数据复制到问题框中时犯的错误)

当我查看控制台编辑器时,我看到:

enter image description here

最佳答案

d3.extent接受一个值数组并将边界作为数组返回。所以我想你的代码应该更像是:

.domain(d3.extent(d3.values(data, function(data) { 
return +d.logFC;
})))

(没有方括号)

不是 100% 肯定,因为我不知道 data变量在您的示例中。

更新:

如果数据变量是加载的 JSON 对象,请执行以下操作:
.domain(d3.extent(data.children.map(function(child) { 
return +child.logFC;
})))

关于json - d3.js,使用 d3.extent 查找嵌套 json 值的最小值/最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38859339/

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