【发布时间】:2014-04-14 13:00:24
【问题描述】:
我最近开始学习 D3.js 并遇到了一些问题.. 这是我到目前为止尝试过的:
这是我的 JS:
d3.json("../js/sample2.json", function(data) {
var canvas = d3.select("body").append("svg")
.attr("width", 500)
.attr("height", 500)
.attr("border", "black")
var group = canvas.append("g")
.attr("transform", "translate(100,10)")
var line = d3.svg.line()
.x(function(d, i) {
return data[0].position[i];
})
.y(function(d, i) {
return data[1].position[i];
});
var line1 = d3.svg.line()
.x(function(d, i) {
return data[2].position[i];
})
.y(function(d, i) {
return data[3].position[i];
});
var j = 0;
group.selectAll("path")
.data(data).enter()
.append("path")
// Have to provide where exaclty the line array is ! (line(array))
.attr("d", line(data[j].position))
.attr("fill", "none")
.attr("stroke", "green")
.attr("stroke-width", 3);
var group2 = group.append("g")
.attr("transform", "translate(100,10)")
group2.selectAll("path")
.data(data).enter()
.append("path")
// Have to provide where exaclty the line array is ! (line(array))
.attr("d", line1(data[j].position))
.attr("fill", "none")
.attr("stroke", "red")
.attr("stroke-width", 3);
});
这是我的 JSON 文件:
[ {"name": "x1",
"position":[40,60,80,100,200]
},
{"name": "y1",
"position":[70,190,220,160,240]},
{"name": "x2",
"position":[40,60,80,100,200]
},
{"name": "y2",
"position":[20,90,20,60,40]}
]
我希望从 JSON 文件中检索到的数据中显示该行。 我实际上得到了输出, 这是我当前收到的输出:
但问题是,我希望它更有活力。 例如,如果 JSON 中有更多数据。
JSON 可以从 x1,y1 到 xn,yn...(类似于上面 JSON 中的格式)
[ {"name": "x1",
"position":[40,60,80,100,200]
},
{"name": "y1",
"position":[70,190,220,160,240]
},
{"name": "x2",
"position":[40,60,80,100,200]
},
{"name": "y2",
"position":[20,90,20,60,40]}
.
.
.
.
{"name": "xn",
"position":[40,60,80,100,200]
},
{"name": "yn",
"position":[20,90,20,60,40]}]
所以我与此相关的问题是:
- 如何使其动态(即:无论 JSON 中的数据量如何,它都应反映在带有所需图表的图表上)
- 使用D3.json输入D3js的JSON数据格式会不会有问题? (或者 D3.json 所需的格式到底是什么,是否严格?)
【问题讨论】:
-
不完全确定您在寻找什么,但this example 可能会有所帮助。
-
我之前已经检查过了。但是如果你使用的是 d3js,你会使用 JSON 还是 tsv 格式的输入数据?
-
没关系,我猜你更容易制作。
标签: javascript json svg d3.js html5-canvas