Javascript D3嵌套和对象遍历
我在下面共享了一个json,我正在尝试在可视化之前嵌套数据。我希望在gov和non-gov下描绘每个供应商是如何为高项目和低项目分配的,因此试图创建一个json对象,比如Javascript D3嵌套和对象遍历,javascript,d3.js,nested,Javascript,D3.js,Nested,我在下面共享了一个json,我正在尝试在可视化之前嵌套数据。我希望在gov和non-gov下描绘每个供应商是如何为高项目和低项目分配的,因此试图创建一个json对象,比如[{v1:{gov:{high:3,low:2},{non-gov:{high:12,low:1}},{v2:{gov:{high:3,low:2},{non-gov:{high:12,low:1},},},{code> 我可以嵌套数据,但无法获得相应的计数。感谢您提供任何指导。如果问题结构含糊不清,我深表歉意 [
[{v1:{gov:{high:3,low:2},{non-gov:{high:12,low:1}},{v2:{gov:{high:3,low:2},{non-gov:{high:12,low:1},},},{code>
我可以嵌套数据,但无法获得相应的计数。感谢您提供任何指导。如果问题结构含糊不清,我深表歉意
[
{
"vendor": "V1",
"ptype": "Gov",
"critical": "high"
},
{
"vendor": "V2",
"ptype": "Gov",
"critical": "low"
},
{
"vendor": "V3",
"ptype": "Gov",
"critical": "high"
},
{
"vendor": "V4",
"ptype": "Non-Gov",
"critical": "low"
},
{
"vendor": "V5",
"ptype": "Non-Gov",
"critical": "high"
},
{
"vendor": "V6",
"ptype": "Gov",
"critical": "high"
},
{
"vendor": "V7",
"ptype": "Gov",
"critical": "high"
},
{
"vendor": "V8",
"ptype": "Non-Gov",
"critical": "low"
},
{
"vendor": "V9",
"ptype": "Non-Gov",
"critical": "high"
},
{
"vendor": "V10",
"ptype": "Gov",
"critical": "high"
},
{
"vendor": "V1",
"ptype": "Non-Gov",
"critical": "low"
},
{
"vendor": "V2",
"ptype": "Non-Gov",
"critical": "high"
},
{
"vendor": "V3",
"ptype": "Non-Gov",
"critical": "low"
},
{
"vendor": "V4",
"ptype": "Non-Gov",
"critical": "high"
},
{
"vendor": "V5",
"ptype": "Non-Gov",
"critical": "high"
},
{
"vendor": "V6",
"ptype": "Non-Gov",
"critical": "low"
},
{
"vendor": "V7",
"ptype": "Gov",
"critical": "low"
},
{
"vendor": "V8",
"ptype": "Gov",
"critical": "high"
},
{
"vendor": "V9",
"ptype": "Non-Gov",
"critical": "high"
},
{
"vendor": "V10",
"ptype": "Non-Gov",
"critical": "low"
},
{
"vendor": "V1",
"ptype": "Gov",
"critical": "high"
},
{
"vendor": "V2",
"ptype": "Gov",
"critical": "low"
},
{
"vendor": "V3",
"ptype": "Non-Gov",
"critical": "high"
},
{
"vendor": "V4",
"ptype": "Non-Gov",
"critical": "high"
},
{
"vendor": "V5",
"ptype": "Non-Gov",
"critical": "high"
},
{
"vendor": "V6",
"ptype": "Gov",
"critical": "high"
},
{
"vendor": "V7",
"ptype": "Gov",
"critical": "high"
},
{
"vendor": "V8",
"ptype": "Non-Gov",
"critical": "low"
},
{
"vendor": "V9",
"ptype": "Gov",
"critical": "high"
},
{
"vendor": "V10",
"ptype": "Gov",
"critical": "low"
}
]
没有汇总
n = d3.nest().key(function(d){return d.vendor;})
.key(function(d){return d.ptype;})
.key(function(d){return d.critical;})
.entries(j);
带卷
n = d3.nest().key(function(d){return d.vendor;})
.key(function(d){return d.ptype;})
.key(function(d){return d.critical;})
.rollup(function(leaf){
return[
{key:'GH', value:leaf[0].values.length}
,{key:'GL',value:leaf[1].values.length}
]})
.entries(j);
我不知道D3,但使用vanilla JS可以按如下方式转换数据:
var-input=[{“供应商”:“V1”,“ptype”:“政府”,“关键”:“高”},{“供应商”:“V2”,“ptype”:“政府”,“关键”:“低”},{“供应商”:“V3”,“ptype”:“政府”,“关键”:“高”},{“供应商”:“V4”,“ptype”:“非政府”,“关键”:“高”},{“供应商”:“V5”,“ptype”:“非政府”,“关键”:“高”},{“供应商”:“政府”,“V6”,“ptype”:“政府”,“关键”:“高”},{“供应商”:“V7”,“ptype”:“政府”,“关键”:“高”},{“供应商”:“V8”,“ptype”:“非政府”,“关键”:“低”},{“供应商”:“V9”,“ptype”:“非政府”,“关键”:“高”},{“供应商”:“V10”,“ptype”:“政府”,“关键”:“高”},{“供应商”:“V1”,“ptype”:“非政府”,“关键”:“低”},{“供应商”:“V2”,“ptype”:“非政府”,“关键”;“高”;“供应商”;“高”;“供应商”;“高”;“非政府”;“关键”;“低”;“供应商”;“低”;“低”;“供应商”;“关键”;“高”;“非政府”;“关键”;“高”;“供应商”;“高”;“非政府”;“关键”;“低”;“供应商”;“V7”;“ptype:“政府”;“关键”;“低”;“供应商”;“低”;“供应商”;“V8”;“政府”;“关键”;“高”;“高”;“低”;“供应商”;“高”;“高”;“政府”;“高”;“政府”关键“:”高“},{”供应商“:”V9“,”ptype“:”非政府“,”关键“,”高“},{”供应商“,”V10“,”ptype“,”非政府“,”关键“,”低“,”高“,”政府“,”关键“,”低“,”供应商“,”V3“,”ptype“,”非政府“,”关键“,”高“,”政府“,”非政府“,”供应商“,”V4“,”ptype“:”非政府“,”“,”关键“:”高“},{”供应商“:”V5“,”ptype“:”非政府“,”关键“,”高“,”供应商“,”高“,”政府“,”关键“,”V7“,”ptype“,”政府“,”关键“,”高“,”供应商“,”V8“,”ptype“,”非政府“,”关键“,”低“,”供应商“,”V9“,”ptype“,”政府“,”关键“,”高“,”供应商“,”V10“,”ptype“,”政府“,“临界”:“低”}];
var工作=输入。减少(功能(p,c){
var v=p[c.供应商];
如果(!v)v=p[c.vendor]={Gov:{high:0,low:0},“非Gov”:{high:0,low:0};
v[c.ptype][c.critical]++;
返回p;
}, {});
var输出=Object.keys(工作).map(函数(v){
var o={};
o[v]=工作[v];
返回o;
});
console.log(output);
我不知道D3,但是使用vanilla JS可以如下转换数据:
var input=[{“供应商”:“V1”,“ptype”:“政府”,“关键”:“高”},{“供应商”:“V2”,“ptype”:“政府”,“关键”:“低”},{“供应商”:“V3”,“ptype”:“政府”,“关键”:“高”},{“供应商”:“V4”,“ptype”:“非政府”,“关键”:“非政府”,“关键”:“高”},{“供应商”:“V5”,“ptype”:“非政府”,“关键”:“高”},{“供应商”:“供应商”:“V6”,“ptype”:“政府”,“关键”“:”高“},{”供应商“:”V7“,”ptype“:”政府“,”关键“,”高“,”供应商“,”V8“,”ptype“,”非政府“,”关键“,”低“,”供应商“,”V9“,”ptype“,”非政府“,”关键“,”高“,”政府“,”关键“,”高“,”供应商“,”V1“,”ptype“,”非政府“,”关键“,”低“,”供应商“,”V2“,”ptype“,”非政府“,”,“关键”;“高”;“供应商”;“高”;“供应商”;“高”;“非政府”;“关键”;“低”;“供应商”;“低”;“低”;“供应商”;“关键”;“高”;“非政府”;“关键”;“高”;“供应商”;“高”;“非政府”;“关键”;“低”;“供应商”;“V7”;“ptype:“政府”;“关键”;“低”;“供应商”;“低”;“供应商”;“V8”;“政府”;“关键”;“高”;“高”;“低”;“供应商”;“高”;“高”;“政府”;“高”;“政府”关键“:”高“},{”供应商“:”V9“,”ptype“:”非政府“,”关键“,”高“},{”供应商“,”V10“,”ptype“,”非政府“,”关键“,”低“,”高“,”政府“,”关键“,”低“,”供应商“,”V3“,”ptype“,”非政府“,”关键“,”高“,”政府“,”非政府“,”供应商“,”V4“,”ptype“:”非政府“,”“,”关键“:”高“},{”供应商“:”V5“,”ptype“:”非政府“,”关键“,”高“,”供应商“,”高“,”政府“,”关键“,”V7“,”ptype“,”政府“,”关键“,”高“,”供应商“,”V8“,”ptype“,”非政府“,”关键“,”低“,”供应商“,”V9“,”ptype“,”政府“,”关键“,”高“,”供应商“,”V10“,”ptype“,”政府“,“临界”:“低”}];
var工作=输入。减少(功能(p,c){
var v=p[c.供应商];
如果(!v)v=p[c.vendor]={Gov:{high:0,low:0},“非Gov”:{high:0,low:0};
v[c.ptype][c.critical]++;
返回p;
}, {});
var输出=Object.keys(工作).map(函数(v){
var o={};
o[v]=工作[v];
返回o;
});
console.log(输出);
我可以这样做
var nested_data = d3.nest()
.key(function(d) { return d.vendor; }).sortKeys(d3.ascending)
.key(function(d) { return d.ptype; }).sortKeys(function(d) { return d;})
.key(function(d) { return d.critical; }).sortKeys(function(d) { return d;})
.rollup(function(leaves) { return leaves.length; })
.entries(j);
谢谢!我可以这样做
var nested_data = d3.nest()
.key(function(d) { return d.vendor; }).sortKeys(d3.ascending)
.key(function(d) { return d.ptype; }).sortKeys(function(d) { return d;})
.key(function(d) { return d.critical; }).sortKeys(function(d) { return d;})
.rollup(function(leaves) { return leaves.length; })
.entries(j);
谢谢!谢谢nnnnnn!我在寻找更多的d3方式……:)谢谢nnnnnn!我在寻找更多的d3方式……)