有人至少知道這可能被稱爲什麼?
這個在dataviz中的技術名稱是象形圖。
下面是一個繪製矩形的通用代碼,您必須根據需要更改某些部分。最重要的部分是計算矩形x
和y
的位置,使用modulo operator。
首先,我們設置每個矩形的初始位置和大小。你必須根據你的座標設置它。
var positionX = 5;
var positionY = 5;
var size = 5;
然後,讓我們設置你要多少矩形(這一點,在你的代碼,會d.count
):基於計數
var count = 15;
var gridSize = Math.ceil(Math.sqrt(count));
var data = d3.range(count);
,我們設置了gridSize
(只是一個平方根)和data
。
現在我們繪製矩形:
var rects = svg.selectAll(".rects")
.data(data)
.enter()
.append("rect");
rects.attr("width", size)
.attr("height", size)
.attr("x", function(d,i){ return positionX + (i%gridSize)*(size*1.1)})
.attr("y", function(d,i){ return positionY + (Math.floor((i/gridSize)%gridSize))*(size*1.1) })
.attr("fill", "red");
這裏是一個工作片段,用15作爲計數(4,9,16,25等會給你一個完美的正方形)。更改count
,看看它是如何適應:
var svg = d3.select("body")
\t .append("svg")
\t .attr("width", 50)
\t .attr("height", 50);
\t
var count = 15;
var size = 5;
var positionX = 5;
var positionY = 5;
var gridSize = Math.ceil(Math.sqrt(count));
var data = d3.range(count);
var rects = svg.selectAll(".rects")
\t .data(data)
\t .enter()
\t .append("rect");
\t
rects.attr("width", size)
\t .attr("height", size)
\t .attr("x", function(d,i){ return positionX + (i%gridSize)*(size*1.2)})
\t .attr("y", function(d,i){ return positionY + (Math.floor((i/gridSize)%gridSize))*(size*1.2) })
\t .attr("fill", "red");
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
另一種可能的途徑可以是使用'樹形圖()'? http://bl.ocks.org/mbostock/4063582 –
有人至少知道這可能被稱爲什麼?我甚至不知道現在要google什麼 - 嘗試使用'd3佈局包矩形'並沒有讓我走得很遠。 –
使每個計數組成爲相同大小的分區可能是有前景的:http://animateddata.co.uk/slides/d3-layouts/partition.html。計算可行? –