当前位置: 首页 > news >正文

「数据可视化 D3系列」入门第一章:Hello D3.js

Hello D3.js

    • 一、初识D3.js:用JavaScript操控DOM
    • 二、用D3操作DOM
      • 代码解析
    • 三、D3.js与jQuery的异同
    • 四、下一步学习


一、初识D3.js:用JavaScript操控DOM

D3.js(Data-Driven Documents)是一个强大的JavaScript库,它让我们能够用数据驱动文档的变换。让我们从一个简单的"Hello World"示例开始,逐步探索D3的核心概念。

二、用D3操作DOM

👇 代码示例

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>D3.js入门 - Hello World</title>
  <script src="https://d3js.org/d3.v7.min.js"></script>
  <style>
    body {
      font-family: 'Microsoft YaHei', sans-serif;
      padding: 20px;
      background-color: #f5f5f5;
    }
    h3 {
      color: #2c3e50;
      margin: 10px 0;
      padding: 8px;
      background-color: #ecf0f1;
      border-left: 4px solid #3498db;
    }
  </style>
</head>
<body>
  <h1>D3.js入门示例</h1>
  <div id="poem-container">
    <h3></h3>
    <h3></h3>
    <h3></h3>
    <h3></h3>
  </div>
</body>
<script>
  // 使用D3选择所有h3元素并设置文本内容
  const poemLines = [
    "日照香炉生紫烟",
    "遥看瀑布挂前川",
    "飞流直下三千尺",
    "疑是银河落九天"
  ];
  
  // 方法1:直接选择并设置文本
  d3.selectAll("h3")
    .text((d, i) => poemLines[i]);
  
  // 方法2:使用数据绑定(更D3的方式)
  d3.selectAll("h3")
    .data(poemLines)
    .text(d => d);
  
  // 添加一些交互效果
  d3.selectAll("h3")
    .on("mouseover", function() {
      d3.select(this)
        .style("background-color", "#bdc3c7")
        .style("color", "white");
    })
    .on("mouseout", function() {
      d3.select(this)
        .style("background-color", "#ecf0f1")
        .style("color", "#2c3e50");
    });
</script>
</html>

👇 运行效果:
在这里插入图片描述

代码解析

  1. D3的选择器
  • d3.select("selector") - 选择第一个匹配元素

  • d3.selectAll("selector") - 选择所有匹配元素

  1. 数据绑定
    D3的核心思想是数据驱动:
d3.selectAll("h3")
  .data(poemLines)  // 绑定数据
  .text(d => d);    // 使用数据
  1. 链式调用
    D3采用了流畅接口设计,允许方法链式调用:
d3.selectAll("h3")
  .data(data)
  .text(d => d)
  .style("color", "red");

三、D3.js与jQuery的异同

看着上述写法是不是与jQuery比较像呢?下面看看他们之间的区别吧

特性D3.jsjQuery
目的数据可视化DOM操作/AJAX
数据绑定核心功能无专门机制
动画基于数据的过渡基础动画效果
SVG支持强大有限

四、下一步学习

在下一章中,我们将深入探讨:

  1. 选择元素
  2. 绑定数据

“D3不是图表库,而是数据与DOM绑定的强大工具。” - Mike Bostock(D3.js创始人)

相关文章:

  • 数据库实战篇,JSON对象在Kooboo中的实际应用(二)
  • SQL注入之时间盲注攻击流程详解
  • SLAM文献之DM-VIO: Delayed Marginalization Visual-Inertial Odometry
  • 大模型之Hugging Face
  • 信奥还能考吗?未来三年科技特长生政策变化
  • 【开发教程】学生团队项目开发协调管理文档库构建以及使用指南
  • #4 为什么要物联以及 物联网的整体结构
  • linux tracepoint系列宏定义(TRACE_EVENT,DEFINE_TRACE等)展开过程分析之三 define_trace.h头文件
  • 【blender小技巧】Blender导出带贴图的FBX模型,并在unity中提取材质模型使用
  • telepresence使用指南
  • 【LH-开发记录】
  • Dockerfile 学习指南和简单实战
  • 一文介绍关于多模态的基础知识 !!
  • PHP弱类型hash比较缺陷
  • 高速连接器设计的技术挑战和解决方案
  • Dify智能体平台源码二次开发笔记(5) - 多租户的SAAS版实现(2)
  • 添加登录和注册功能
  • 图像预处理(OpenCV)-part2
  • 3.6 函数图像描绘
  • 3.6 集合
  • 鸿蒙智行八大车型亮相上海车展,余承东拉上三家车企老总“直播推销”
  • 凯撒旅业:2024年营业收入约6.53亿元,同比增长12.25%
  • 特朗普:无意解雇鲍威尔,但美联储应该降低利率
  • 瑞穗银行(中国)有限公司行长:重庆赛力斯超级工厂的智能化程度令人震惊
  • 专家学者视角下的乡村教育:目标与出路并非“走出大山”
  • 市场监管部门完成全国保健食品生产企业体系检查首轮全覆盖