D3.js V5.0 词云图(标签云)

本文介绍了如何使用D3.js V5.0的d3-cloud插件创建词云图,包括所需的数据结构和实现代码。展示了词云图在数据可视化中的应用,提到了其优点在于快速生成图表,但缺点是单词布局随机,仅通过字体大小强调重点,适合初学者入门。
摘要由CSDN通过智能技术生成

#词云图
需要安装d3-cloud 插件。
https://www.npmjs.com/package/d3-cloud

实现代码如下:

  const width = 500;
  const height = 500;
  const color = d3.scaleOrdinal(d3.schemeCategory10);
  const svg = d3
    .select(id)
    .append('svg')
    .attr('width', width)
    .attr('height', height);

  const layout = cloud()
    .size([500, 500])
    .words(
      data.map(function(d) {
        return { text: d, size: 10 + Math.random() * 90 };
      })
    )
    .padding(5)
    .rotate(function() {
      return Math.random() * 45;
    })
    .font('Impact')
    .fontSize(function(d) {
      return d.size;
    })
    .on('end', draw);

  layout.start();

  function draw(words) {
    svg
      .append('g')
      .attr('transform', `translate(${layout.size()[0] / 2},${layout.size()[1] / 2})`)
      .selectAll('text')
      .data(words)
      .enter()
      .append('text')
      .attr('fill', (_, i) => color(i))
      .style('font-size', function(d) {
        return `${d.size}px`;
      })
      .style('font-family', 'Impact')
      .attr('text-anchor', 'middle')
      .attr('transform', function(d) {
        return `translate(${[d.x, d.y]})rotate(${d.rotate})`;
      })
      .text(function(d) {
        return d.text;
      });
  }

数据结构:
[
“Web2.0”,
“JavaScript”,
“HTML”,
“CSS”,
“D3”,
“SVG”,
“React”,
“Vue”
]
运行截图:
在这里插入图片描述

优缺点:
优点:使用这个插件可以很快速的得到想要的图表。
缺点:做数据可视化需要一个更新的过程,可以通过刷新组件来重新渲染或者(请大佬指教)。
本例子实现较为简单。单词位置较为随机,只通过字体大小来进行突出重点,不是很理想的类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值