1
我正尝试使用以下嵌套json文件创建一个简单的d3条形图(http://bost.ocks.org/mike/bar/2/)。使用多维数组/嵌套json文件创建d3水平条形图
{
"clustername": "cluster1",
"children": [
{
"neighborhoodname": "Shaw",
"children": [
{
"totpop2000": "1005",
"children": [
{
"name": "demographic",
"children": [
{"name": "Black", "size2000":0.18},
{"name": "White", "size2000":0.6},
{"name": "Hispanic", "size2000":0.40},
{"name": "Asian", "size2000":0.10}
]
},
{
"name": "wellbeing",
"children": [
{"name": "Unemployment", "size2000":0.40},
{"name": "Poverty", "size2000":0.1},
{"name": "Without HS Education", "size2000":0.31}
]
},
{
"name": "crime",
"children": [
{"name": "Violent Crime", "size2000":0.09},
{"name": "Property Crime", "size2000":0.08}
]
},
{
"name": "housing",
"children": [
{"name": "Home Ownership", "size2000":0.34},
{"name": "Houses for Rent", "size2000":0.50}
]
}
]
}
]
}
]
}
到目前为止,我的JavaScript包括用于添加标记为size2000
到SVG量的下列但是当我运行的代码,我似乎无法追加数据的适当阵列(即我得到的第一个数组/ "clustername": "cluster1"
)在我的json文件中。
var data = d3.json("data/test.json", function(json) {
\t console.log(json);
\t
var bar = chart2000.selectAll("g")
.data(data)
.enter().append("g")
.attr("transform", function(d, i) { return "translate(0," + i * height + ")"; });
bar.append("rect")
.attr("width", function(d) { return x((d.size2000)*100); })
.attr("height", height - 1);
bar.append("text")
.attr("x", function(d) { return x((d.size2000)*100) - 3; })
.attr("y", height/2)
.attr("dy", ".35em")
.text(function(d) { return (d.size2000)*100); });
});
有没有办法让JSON数据结构和size2000
值追加到SVG?如果是这样,怎么样?
非常感谢您的帮助。我尝试了你的建议,但是我收到了barChartData.append(node)行的“undefined不是函数”错误。逻辑在那里,为什么它是未定义的? – BYOUNGER
@BYOUNGER这应该是'push'而不是'append'。查看更新的答案。 –
谢谢@musically_ut!我能够推动数据。 – BYOUNGER