D3에서 json 데이터로 작업하는 데 문제가 있습니다. 이 파일은 내가 console.log
일 때 나타나는 것으로 판단하여 적절하게 읽혀지고 발견 된 모든 예를 기반으로 올바른 형식으로 표시됩니다. 그러나 .data(function(json_data){return json_data.accessibility;})
을 사용하여 중첩 선택을 시도하면 "정의되지 않은 속성 '길이'를 읽을 수 없습니다.중첩 된 선택을 시도 할 때 D3 데이터가 정의되지 않았습니다.
내 기능 :
//load scenario json data
d3.json("./SupportTool/scenario1result.json", function(error, json_data){
if(error) {return console.warn(error)};
console.log(json_data); //works
// add main SVG block
var svg = d3.select(d3id)
.append('svg')
.attr('width', 300)
.attr('height', 75)
.attr('id', 'svgblock');
// add an SVG group element for each scenario
var series = svg.selectAll('g.series')
.data(d3.keys(json_data))
.enter()
.append('g')
.attr('class', 'series');
var circles = series.selectAll("circle")
.data(function(json_data){return json_data.accessibility;})
.enter()
.append("circle");
var circleAttributes = circles
.attr("cx", 20)
.attr("cy", 20)
.attr("r", 20)
.style("color","blue"); });
내 JSON 데이터 :
{
"meta":[{"sc":"1"},{"stratid":"1"}],
"accessibility":[
{"pop400":"77"},{"pop800":"86"},{"jobs800":"78"},{"pop400tr":"41"},{"pop800tr":"69"},{"jobs800tr":"80"}
],
"housing":[
{"newcom":"0"},{"redev":"100"},
{"apt5":"6"},{"apt4":"65"},{"twn":"14"},{"sglf":"15"},
{"urb":"0"},{"urbhec":"0"}
],
"transport":[
{"walk":"55"},{"transit":"18"},{"auto":"27"},
{"vkt":"11000"},
{"kmtr":"502"},{"form":"grid"},
{"lanekm":"3250"},
{"ghgtr":"67"},{"ghgres":"75"}
],
"costs":[
{"roadcapbils":null,"roadcap":null},
{"transitcapbils":null,"transitcap":null},
{"watercapbils":null,"watercap":null},
{"firecapbils":null,"firecap":null},
{"reccapbils":null,"reccap":null},
{"educapbils":null,"educap":null}
],
"opcosts":[
{"roadopbils":null,"roadop":null},
{"transitoppbils":null,"transitop":null},
{"wateropbils":null,"waterop":null},
{"fireopbils":null,"fireop":null},
{"parksopbils":null,"parksop":null}
] }
감사합니다! 내가 'VAR 원으로 전체 시리즈와 원 청크를 교체 할 때 그것은 잘 작동 = svg.selectAll ("원") \t \t \t \t \t .DATA (json_data.accessibility) \t \t \t \t \t .enter() \t \t \t \t \t .append ("circle"); –