首页 > 其他分享 >常见的图形库概览-03-D3.js 入门例子

常见的图形库概览-03-D3.js 入门例子

时间:2025-01-19 12:53:39浏览次数:1  
标签:03 const attr js 图形库 margin d3 入门

常见的图形库系列

常见的图形库概览-00-overview

常见的图形库概览-01-Chart.js 入门例子

常见的图形库概览-03-D3.js 入门例子

HighCharts 交互式图表-01-入门介绍

Plotly 函数图像绘制

ApexCharts 图表入门例子

Victory 图表基于 React,适合 React 项目,支持移动端

Recharts 入门例子

AntV G2 入门例子

图表库 C3.js 入门例子

图表库 Google Charts 入门例子

ECharts-01-图表库系列

入门例子

以下是一个简单的 D3.js 入门示例,展示如何使用 D3.js 创建一个基本的柱状图(Bar Chart)。D3.js 是一个功能强大且灵活的库,适合创建高度定制化的数据可视化。

代码

普通的例子:

<!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>
    <script src="https://d3js.org/d3.v7.min.js"></script>
</head>
<body>
    <div id="chart"></div>

    <script>
        // 数据
        const data = [30, 86, 168, 281, 303, 365];

        // 设置图表的宽度和高度
        const width = 500;
        const height = 300;
        const margin = { top: 20, right: 30, bottom: 30, left: 40 };

        // 创建 SVG 画布
        const svg = d3.select("#chart")
            .append("svg")
            .attr("width", width)
            .attr("height", height);

        // 创建比例尺
        const x = d3.scaleBand()
            .domain(d3.range(data.length)) // X 轴范围
            .range([margin.left, width - margin.right]) // X 轴宽度
            .padding(0.1); // 柱子之间的间距

        const y = d3.scaleLinear()
            .domain([0, d3.max(data)]) // Y 轴范围
            .range([height - margin.bottom, margin.top]); // Y 轴高度

        // 添加柱子
        svg.selectAll("rect")
            .data(data)
            .join("rect")
            .attr("x", (d, i) => x(i)) // X 轴位置
            .attr("y", d => y(d)) // Y 轴位置
            .attr("width", x.bandwidth()) // 柱子宽度
            .attr("height", d => height - margin.bottom - y(d)) // 柱子高度
            .attr("fill", "steelblue"); // 柱子颜色

        // 添加 X 轴
        svg.append("g")
            .attr("transform", `translate(0,${height - margin.bottom})`)
            .call(d3.axisBottom(x).tickFormat(i => i + 1));

        // 添加 Y 轴
        svg.append("g")
            .attr("transform", `translate(${margin.left},0)`)
            .call(d3.axisLeft(y));
    </script>
</body>
</html>

关键点说明

  • d3.scaleBand():用于创建 X 轴的比例尺,适合离散数据(如柱状图)。

  • d3.scaleLinear():用于创建 Y 轴的比例尺,适合连续数据。

  • d3.axisBottom()d3.axisLeft():分别用于创建 X 轴和 Y 轴。

  • d3.select():选择 DOM 元素,类似于 jQuery 的选择器。

  • data().join():将数据绑定到 DOM 元素,并处理数据的增删改。

标签:03,const,attr,js,图形库,margin,d3,入门
From: https://www.cnblogs.com/houbbBlogs/p/18679494

相关文章

  • Linux 上安装 Node.js
    在Linux上安装Node.js的方法取决于你使用的发行版。以下是常见的几种安装方法:方法1:通过包管理器安装(推荐)对于Ubuntu/Debian系统:更新系统包索引:sudoaptupdate安装Node.js(LTS版本)你可以直接使用Ubuntu/Debian的官方包管理器安装Node.js,但是推荐使用NodeS......
  • 前端必知必会-Node.js连接MongoDB 创建集合
    文章目录Node.js连接MongoDB创建集合创建集合总结Node.js连接MongoDB创建集合MongoDB中的集合与MySQL中的表相同创建集合要在MongoDB中创建集合,请使用createCollection()方法:示例获取您自己的Node.js服务器创建一个名为“customers”的集合:varMon......
  • 前端必知必会-Node.js连接MongoDB 删除集合
    文章目录Node.js连接MongoDB删除集合删除集合db.dropCollection总结Node.js连接MongoDB删除集合删除集合您可以使用drop()方法删除表或MongoDB中所谓的集合。drop()方法采用包含错误对象和结果参数的回调函数,如果成功删除集合,则返回true,否则返回false。......
  • 为什么说js是弱类型语言,它的优缺点分别是什么?
    JavaScript被认为是弱类型语言,主要是因为它允许变量在不经过强制类型转换的情况下赋予不同数据类型的值。具体来说,在JavaScript中,一个变量可以被赋予数值、字符串、布尔值或对象等不同类型的值,这种灵活性使得JavaScript在编程中带来很大的便利。然而,这种弱类型的特性也带来了一些......
  • 在js中函数返回多个值有哪些方法?
    在JavaScript中,函数本身不能直接返回多个值,但可以通过一些技巧和模式来模拟这一行为。以下是一些常见的方法:使用数组:将多个值放入一个数组中,并返回该数组。这是最简单和最常用的方法。functiongetMultipleValues(){return[1,'two',true];}const[value1,value2......
  • 说说你对AMD、CMD和CommonJS的理解
    在前端开发中,AMD、CMD和CommonJS是三种不同的模块规范,它们各自有着独特的特点和适用场景。下面我将分点详细阐述我对这三种模块规范的理解:一、AMD(异步模块定义)AMD是RequireJS在推广过程中对模块定义的规范化产出,主要用于浏览器端。它使用define()函数来定义模块,允许异步加载模......
  • Linux基础-指令篇03【入门级】
    Linux基础-文件操作内容概要本文主要介绍了在linux系统中如何通过终端指令对文件以及文件内容进行增删改查。同时上传了关于存储转换的小知识点。指令cat/less/more/head/tailcat:查看文件内容(少)执行权限:所有用户语法:cat[选项]文件选项-n:显示文件行号范例......
  • 写js代码时你喜欢哪种命名方式?
    在前端开发,特别是JavaScript编程中,命名方式(或称为命名约定)对于代码的可读性和可维护性至关重要。以下是一些常见的JavaScript命名方式,以及我个人(以及许多开发者)的偏好:驼峰命名法(CamelCase):小驼峰(lowerCamelCase):第一个单词的首字母小写,后面单词的首字母大写。例如:myVariableNa......
  • node.js毕设公交出行系统论文+程序 (2)
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容选题背景关于公交出行系统的研究,现有研究主要以提升公交运营效率、优化线路规划等方面为主,专门针对构建一个集多种功能于一体,满足用户多样化需求且便捷易用的公交出......
  • node.js毕设公交大厦停车场管理系统论文+程序
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容选题背景关于停车场管理系统的研究,现有研究主要以大型商业中心、小区停车场等场景为主,专门针对公交大厦停车场管理系统的研究较少。在国内外,停车场管理系统发展较为......