利用D3.js实现数据可视化的简单示例

目录

一、D3.js选择器

二、数据绑定相关方法

三、DOM操作方法

四、事件监听

五、实现折线图案例

1.首先引入 D3.js 库。

2.然后获取数据(这里定义了销售数据数组作为数据)。

3.接着创建一个 svg 元素作为画布

4.定义 x 轴和 y 轴的比例尺,x 轴使用 scaleBand 比例尺来处理离散的月份数据,y 轴使用 scaleLinear 比例尺根据销售金额的范围来确定坐标范围

5.分别添加 x 轴和 y 轴到 svg 画布上。

6.定义折线生成器

7.使用数据绘制折线和数据点

8.监听事件并添加处理函数


使用D3.js过程中,我们一般需要创建画布、绑定数据、选择元素、操作元素、监听元素事件等,因此,需要先了解D3.js的选择器、数据绑定方式、DOM操作方法、事件监听等。

一、D3.js选择器

1. d3.select() :. 

   - 选择第一个匹配的 DOM 元素。

   - 用法:`d3.select(selector)`,其中 `selector` 是 CSS 选择器字符串。

2. d3.selectAll() :

   - 选择所有匹配的 DOM 元素。

   - 用法:`d3.selectAll(selector)`,其中 `selector` 是 CSS 选择器字符串。

二、数据绑定相关方法

1.enter() :

   - 为数据绑定过程中未匹配的元素创建新的 DOM 元素。

   - 用法:`selection.enter()`。

2.exit() :

   - 为数据绑定过程中多余的元素(即数据减少时)提供操作。

   - 用法:`selection.exit()`。

3.data() :

   - 将数据绑定到 DOM 元素上。

   - 用法:`selection.data(data)`,其中 `data` 是要绑定的数据。

三、DOM操作方法

1.attr() :

   - 获取或设置 DOM 元素的属性。

   - 用法:`selection.attr(name, value)`。

2.style() :

   - 获取或设置 DOM 元素的样式。

   - 用法:`selection.style(name, value)`。

3.text() :

   - 获取或设置 DOM 元素的文本内容。

   - 用法:`selection.text(value)`。

4.html() :

   - 获取或设置 DOM 元素的 HTML 内容。

   - 用法:`selection.html(value)`。

5.append() :

    - 在选定的元素中添加新的子元素。

    - 用法:`selection.append(name)`,其中 `name` 是新元素的标签名。

6.remove() :

    - 移除选定的元素。

    - 用法:`selection.remove()`。

四、事件监听

1.on() :

    - 为 DOM 元素添加事件监听器。

    - 用法:`selection.on(eventName, listener)`。

五、实现折线图案例

DOCTYPE html><html lang="en">
<head>
  <meta charset="UTF-8"> 
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>D3.js实现折线图案例title>
  <style>
    svg {
      width: 600px;
      height: 400px;
      border: 1px solid #ccc;
    }
  style>
head>
<body>
  <script src="https://d3js.org/d3.v7.min.js">script>  <script>
    // 销售数据
    const salesData = [      { month: 'Jan', amount: 12000 },      { month: 'Feb', amount: 15000 },      { month: 'Mar', amount: 18000 },      { month: 'Apr', amount: 16000 },      { month: 'May', amount: 20000 },      { month: 'Jun', amount: 22000 }    ];
    // 定义 svg 画布
    const svg = d3.select('body').append('svg');
    // 定义 x 轴比例尺
    const xScale = d3.scaleBand()
     .domain(salesData.map(d => d.month))
     .range([0, 500])
     .padding(0.2);
    // 定义 y 轴比例尺
    const yScale = d3.scaleLinear()
     .domain([0, d3.max(salesData, d => d.amount)])
     .range([300, 0]);
    // 添加 x 轴
    svg.append('g')
     .attr('transform', 'translate(50,300)')
     .ca
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜月还山岚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值