【问题标题】:Create Pie chart of frequency count with D3.js使用 D3.js 创建频率计数饼图
【发布时间】:2016-11-01 09:47:27
【问题描述】:

我有一个关于 d3.js 的问题

假设我有这个数据:

A A B K J I O N P B N J D G R X S O M H Y D J B T N Y S B N R N E B U D B G D G Y F T K O

我想获取每个字母的频率计数并用 D3.js 制作饼图

【问题讨论】:

  • 你试过什么?我知道这是一个虚拟数据,但是您必须尝试使用​​原始数据进行某些操作。你也可以分享一下吗?
  • 您不能使用外部网络服务提供该数据。我使用 WSO2 MS4J 做了类似的事情。从中我使用 Java 读取数据并计算频率,并使用 d3.js 作为正确的 HTTP 响应将其返回到服务器。
  • 我用Rstudio手动统计频率,新建表,用D3做饼图。我相信我所做的事情没有效果。有没有用 D3 计算频率?

标签: javascript d3.js web bigdata


【解决方案1】:

您不需要d3 进行计数,只需简单的 JavaScript:

var string = "A A B K J I O N P B N J D G R X S O M H Y D J B T N Y S B N R N E B U D B G D G Y F T K O";
var counts = {};
string.split(" ").forEach(function(d) {
  if (!counts[d]) {
    counts[d] = 0;
  }
  counts[d]++;
});

从那里饼图变得漂亮:

<!DOCTYPE html>
<html>

<head>
  <script data-require="d3@4.0.0" data-semver="4.0.0" src="https://d3js.org/d3.v4.min.js"></script>
</head>

<body>
  <script>
    var string = "A A B K J I O N P B N J D G R X S O M H Y D J B T N Y S B N R N E B U D B G D G Y F T K O";
    var counts = {};
    string.split(" ").forEach(function(d) {
      if (!counts[d]) {
        counts[d] = 0;
      }
      counts[d]++;
    });

    var data = d3.entries(counts);

    console.log(data)

    var width = 360;
    var height = 360;
    var radius = Math.min(width, height) / 2;

    var color = d3.scaleOrdinal(d3.schemeCategory20b);

    var svg = d3.select('body')
      .append('svg')
      .attr('width', width)
      .attr('height', height)
      .append('g')
      .attr('transform', 'translate(' + (width / 2) +
        ',' + (height / 2) + ')');

    var arc = d3.arc()
      .innerRadius(0)
      .outerRadius(radius);

    var pie = d3.pie()
      .value(function(d) {
        return d.value;
      })
      .sort(null);

    var path = svg.selectAll('path')
      .data(pie(data))
      .enter()
      .append('path')
      .attr('d', arc)
      .attr('fill', function(d, i) {
        return color(d.data.key);
      });
  </script>
</body>

</html>

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-10
  • 1970-01-01
  • 2014-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多