D3为单个json生成多个图形

时间:2013-02-15 10:23:04

标签: javascript d3.js

有没有办法使用单个json生成多个图形.i只能使用一个数据集。 我能够在所有P标签中只生成一个图,但我想在每个数据集的所有P标签中生成一个不同的图。

HTML

<p class="graph1"></p>
<p class="graph1"></p>
<p class="graph1"></p>
<p class="graph1"></p>
<p class="graph1"></p>

数据集

var dataset=[[2100, 2000, 3200],[2200, 3000, 3200],[1200, 1000, 5200],[1200, 2000, 3200],[1200, 3000, 3500]]; 

D3 Javascript

svg = d3.selectAll('.graph1').append("svg").attr("width",w).attr("height",h);
var rect1 =   svg.append("rect").attr("x",0).attr("y",3*h/4).attr("width",w).attr("height",rect_1_h)
        .style("fill",rect_1_color);

1 个答案:

答案 0 :(得分:1)

如果要基于数据集动态生成图形,可以通过将数据集与选择结合在一个语句中来完成。这可以使用函数data()完成。

例如,如果你想生成一个存储在数组中的填充颜色的矩形,你可以这样做(我只使用你的脚本使用不同的数据集):

var dataset=[["blue"],["red"],["green"],["black"],["orange"]]; 
var rect_1_h =20;
var h =200;
var w=200;
var rects = d3.select("body").selectAll('.graph1')
 .data(dataset)
.enter().append("p").append("svg").attr("width",w).attr("height",h)
.append("rect")
 .attr("x",0)
 .attr("y",3*h/4)
 .attr("width",w)
 .attr("height",rect_1_h)
 .style("fill",function(d) { return d[0];});

这是一个jsfiddle example