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

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

常见的图形库系列

常见的图形库概览-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 元素,并处理数据的增删改。


http://www.kler.cn/a/511993.html

相关文章:

  • 2024-春秋杯冬季赛
  • TP4056锂电池充放电芯片教程文章详解·内置驱动电路资源!!!
  • SQL Server查询计划操作符——查询计划相关操作符(4)
  • [LeetCode] 哈希表 I — 242#有效的字母异位词 | 349#两个数组的交集 | 202#快乐数 | 1#两数之和
  • Reactive StreamsReactor Core
  • R语言的文件操作
  • 计算机系统原理:一些断言
  • Transformer详解:Attention机制原理
  • Vue2:el-tree用scope slot为每一个节点添加一个鼠标悬浮时出现的右对齐的按钮
  • C# 事件(Event)详解
  • C++和OpenGL实现3D游戏编程【连载21】——父物体和子物体模式实现
  • PyTorch框架——基于WebUI:Gradio深度学习ShuffleNetv2神经网络蔬菜图像识别分类系统
  • 【深度学习】傅里叶变换
  • WPS不登录无法使用基本功能的解决方案
  • MySQL快速入门——库的操作
  • Golang学习笔记_28——工厂方法模式
  • Arcgis Pro安装完成后启动失败的解决办法
  • 亚马逊库存管理sql记录
  • JUnit单元测试
  • OpenAI进军实体机器人:GPT赋能的智能未来
  • 成就与远见:2024年技术与思维的升华
  • [Unity]【游戏开发】 脚本创建物体的实践与技巧
  • C语言--深入printf
  • 阿里云安装mikrotik7配置内网互通
  • 欧拉(Euler 22.03)安装安装proxysql
  • 解决Spring+Vue的跨域问题