簡體   English   中英

D3.js中的圓點圖

[英]Dot Plot in D3.js

我有興趣創建一個Dot圖 (每個數據值都有一個連續的點),但到目前為止我所管理的只是為每個值創建一個點。

為了更清楚,讓我們說我想要的array1為第一個值創建5個圓圈,為第二個4個圓圈等等...

array1 = [5,4,2,0,3] 

有任何想法嗎?

我的部分代碼:

var circle = chart.selectAll("g")
    .data(d)
    .enter()
    .append("g")
    .attr("transform", function(d) { return "translate(" + xScale(d.values) + ",0)"; });
circle.append("circle")
    .attr("cx", xScale.rangeBand()/2)
    .attr("cy", function(d) { return yScale(d.frequency); })
    .attr("r", 5);

您可以使用嵌套選擇d3.range() 我們的想法是,對於每個數字,您生成一系列從0開始的數字,並停在比給定數字少的數字處。 這為每個數字提供了一個元素。

然后,圓圈的位置將由索引確定為值的總數,您剛剛生成的值的數量以及每行的圓圈數。

chart.selectAll("g")
  .data(data)
  .enter()
  .append("g")
  .selectAll("circle")
  .data(function(d) { return d3.range(d); })
  .enter()
  .append("circle")
  .attr("cx", function(d, i, j) {
      return ((i + d3.sum(data.slice(0, j))) % numPerRow + 1) * 15;
  })
  .attr("cy", function(d, i, j) {
      return Math.floor((i + d3.sum(data.slice(0, j))) / numPerRow + 1) * 15;
  })
  .style("fill", function(d, i, j) { return colour(j); })
  .attr("r", 5);

在這里完成演示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM