我覺得我在這裏效率低下。我正在嘗試從數組中創建一個圖例,看起來我寫的東西太多了。有人能告訴我它是否可以優化嗎?使用d3.js創建圖例
http://jsbin.com/foqesivice/edit?js,console,output
var data = [
{name: "AnotherLong"},
{name: "BigData"},
{name: "What"},
{name: "Something"},
{name: "Smalls"}
];
var margin = {top: 10, right: 10, bottom: 10, left: 10};
var color = d3.scale.category20c();
var svg = d3.select("body").append("svg")
.attr("width", 400 - margin.left - margin.right)
.attr("height", 1000 - margin.top - margin.bottom)
var g = svg.selectAll(".row")
.data(data)
.enter().append("svg:g")
var rectangles = g.selectAll(".cell")
.data(data)
.enter().append("svg:rect")
.attr("width", 19)
.attr("height", 19)
.attr("transform", function(d, i) { return "translate(0," + i * 20 + ")"; })
.style("fill", function(d, i){return color(i);})
var text = g.selectAll(".text")
.data(data)
.enter().append("svg:text")
.attr("x", 24)
.attr("y", 9)
.attr("dy", ".35em")
.attr("transform", function(d, i) { return "translate(0," + i * 20 + ")"; })
.text(function(d){return d.name;})
編輯:
困擾我的另一件事。看起來我的造型由於某種原因而全部都是大膽的。我還沒有定義任何樣式。那是默認行爲嗎?
是的,你的回答對我來說似乎更好,看起來更像我一直在用d3工作的東西。謝謝! – konrad