2016-04-14 2 views
4

Я использовал этот http://bl.ocks.org/mbostock/4063269 для создания кругов, но мне нужно было бы создать прямоугольник вместо круга, и все эти прямоугольники должны быть упакованы внутри одного большего прямоугольника. пожалуйста помоги.Создайте прямоугольник вместо пузырьков в d3js

ответ

4

Так вы можете создавать прямоугольники вместо кругов.

node.append("rect") 
     .attr("width", function(d) { return d.r*2; })//width is the diameter 
     .attr("x", function(d) { return d.r*-1; }) 
     .attr("y", function(d) { return d.r*-1; }) 
     .attr("height", function(d) { return d.r*2; })//height is the diameter 
     .style("fill", function(d) { return color(d.packageName); }); 

Теперь, чтобы создать прямоугольник, который упаковывает все из них

//get all the data 
    var data = d3.selectAll("g")[0].map(function(d) { 
    return d3.select(d).data()[0] 
    }) 
    //get the min x max x min y max y 
    var xmin = d3.min(data, function(d){return d.x-d.r}) 
    var xmax = d3.max(data, function(d){return d.x+d.r}) 
    var ymin = d3.min(data, function(d){return d.y-d.r}) 
    var ymax = d3.max(data, function(d){return d.y+d.r}) 

    //make a rectangle to make it over other rectangles. 
    svg.insert("rect" ,":first-child") 
    .attr("x", xmin) 
    .attr("y", ymin) 
    .attr("height", ymax-ymin) 
    .attr("width", xmax-xmin) 
    .style("opacity", 0.3) 
    .style("fill","blue"); 

работает пример here

+0

Спасибо. Все эти маленькие прямоугольники должны быть заключены в большой прямоугольник, и в вашем примере все маленькие прямоугольники перекрываются и неравномерно распределены друг от друга. – user123

+0

Извините. Вставьте свой код выше, чтобы упаковать их в большой прямоугольник. Он работает нормально. – user123

+0

для расстояния между прямоугольниками вы можете изменить набивку следующим образом: var bubble = d3.layout.pack() .sort (null) .size ([диаметр, диаметр]) .padding (25.5); 'рабочий код здесь http://plnkr.co/edit/Ku250M0PeRutyQU4VJxn?p=preview – Cyril

Смежные вопросы