d3绘图笔记

news2024/9/29 9:28:35
  1. D3绘图笔记
      1. 安装与引用

npm install d3 --save-dev

import * as d3 from 'd3';

      1. 选择器

d3.select()    可直接接元素名,也可以接属性与类

      1. 添加svg标签

this.d3 = d3.select('.myd3')

let svg = this.d3.append("svg") // 添加svg并设置好高宽

    .attr("width", 600)

.attr("height", 600)

注意:没有这个svg标签后续的操作都无法显示。g标签 rect标签都需要在svg标签里才有效。

      1. 添加绘图位置

let g = svg.append("g").attr("transform", "translate(" + 30 + "," +30 + ")") // 绘图区域

位置如下:上30与左30的位置。注意:这里的左边位置是以竖线为参考而不是坐标值。

 

    1. 比例尺
      1. 定义比例尺

let scaleX = d3.scaleBand()

    .domain(d3.range(0,5))

.rangeRound([0,500]);

scaleBand为序数比例尺,也就是可以自己设置内容

而domain则表示精度,d3.range其实就是[0,1,2,3,4,5]

所以这块也可以手动添加数组进去[‘a’,’b’,’c’,’d’]

rangeRound则是比例尺显示的实际范围,单位为像素。也就是500像素的宽度用来均匀分布比例尺

      1. 插入比例尺

let axisX = d3.axisBottom(scaleX);

g.append('g').attr("transform", "translate(0, " + 300 + ")").call(axisX)

axisBottom 定义比例尺方向,插入比例尺的位置为坐标下方

最后再插入到绘图标签中。位置也需要用translate重新调整。

 

 

      1. 连续比例尺

定义比例尺

let scaleY = d3.scaleLinear()

    .domain([0, d3.max(this.data)])

.range([100, 0]);

let axisY = d3.axisLeft(scaleY);

g.append('g').attr("transform", "translate(0,0)").call(axisY);

d3.max则是从数组中找到数值最大的数。

连续比例尺 会根据范围比如0与 100 而自动设置尺度

而这边的range第一个参数为100则表示从100像素位置往0像素位置绘制比例尺。如下图

 

 

注意:如果设置为0到100 则坐标会从0 20 60这样由上往下递增。

只有将这两边的值对应起来才刚好绘制出正常的效果来

 

    1. 绘制矩形图
      1. 源码

g.selectAll("rect")

  .data([{

    name:'a',

    value:100

  },{

    name:'b',

    value:20

  },{

    name:'c',

    value:50

  },{

    name:'d',

    value:80

  },{

    name:'e',

    value:200

  }])

  .enter()

  .append("rect")

  .attr("x", function(d) { return scaleX(d.name); })

  .attr("y", function(d) { return scaleY(Math.max(0, d.value)); })

  .attr("width", scaleX.bandwidth()*0.8)

  .attr("height", function(d) { return Math.abs(scaleY(d.value) - scaleY(0)); })

  .attr("fill", function(d) { return d.value < 0 ? "#f44336" : "#4caf50"; });

g.selecltAll这里也要注意矩形图绘制的地方在哪里,这里是选择的是g元素。

这个selectAl(“rect”)相当于创建了一个正方形

data 这表示里面筛入的数据,数组类型格式都不重要,重要的是数据先塞进去,后续再处理。

enter 将数据挂载进去,也就是绑定进去。

append(‘rect’) 将正方形塞进去,也就是渲染dom节点。

attr("x", function(d) { return scaleX(d.name); }) 塞进去之后在调整x轴的位置,这里第二个参数则可以接函数来动态设置值,而scaleX(d.name)函数则表示从上面的x轴中找到该名称对应的位置。比如d.name为a 则会寻找上面的 d3.scaleBand() .domain([‘a’,’b’,’c’]) 这块a对应的位置。

.attr("y", function(d) { return scaleY(Math.max(0, d.value)); })同理y轴位置也是如此。

.attr("width", scaleX.bandwidth()*0.8) 矩形的宽度

.attr("height", function(d) { return Math.abs(scaleY(d.value) - scaleY(0)); }) 矩形的高度,这边的属性其实都支持动态函数变化。

.attr("fill", function(d) { return d.value < 0 ? "#f44336" : "#4caf50"; }); 则为填充色

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/398846.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

<Linux>system v通信

前言&#x1f603;&#x1f603;&#x1f603;进程间通信的方式管道 - Linux原生提供SystemV - 多线程单机通信posix - 多线程网络通信这里我们主要是介绍一下SystemV通信方式一、SystemV原理首先我们需要知道通信的本质&#xff1a;多个进程能看到同一个资源&#xff0c;即内存…

如何使用码匠连接 CouchDB

目录 在码匠中集成 CouchDB 在码匠中使用 CouchDB 关于码匠 CouchDB 是一种开源的 NoSQL 数据库服务&#xff0c;它使用基于文档的数据模型来存储数据。CouchDB 的数据源提供了高度可扩展性、高可用性和分布式性质。它支持跨多个节点的数据同步和复制&#xff0c;可以在多个…

mysql数据库之表级锁

表级锁&#xff0c;每次操作锁住整张表。锁定粒度大&#xff0c;发生所冲突的概率最高&#xff0c;并发度最低。应用在myisam、innodb、bdb等存储引擎中。 一、表级锁分类。 1、表锁 2、元数据锁&#xff08;meta data lock&#xff0c;MDL&#xff09; 3、意向锁 二、表锁…

yum保留安装包

一. 用downloadonly下载 1.1 处理依赖关系自动下载到/tmp/pages目录&#xff0c;pages这个目录会自动创建 yum install --downloadonly --downloaddir/tmp/pages ceph-deploy注意&#xff0c;如果下载的包包含了任何没有满足的依赖关系&#xff0c;yum将会把所有的依赖关系包下…

微信小程序的代码由哪些结构组成?

小程序官方建议把所有小程序的页面&#xff0c;都存放在pages 目录中&#xff0c;以单独的文件夹存在&#xff0c;如图所示&#xff1a; 其中&#xff0c;每个页面由4 个基本文件组成&#xff0c;它们分别是&#xff1a;js文件(页面的脚本文件&#xff0c;存放页面的数据、事件…

Bean三种实例化方式的底层原理

Bean实例化的三种方式 1&#xff0c;使用类构造器实例化&#xff08;无参构造函数&#xff09;2&#xff0c;使用静态工厂方法实例化&#xff08;简单工厂模式&#xff09;3&#xff0c;使用实例工厂方法实例化&#xff08;工厂方法模式&#xff09; 基于以上的三种方式&…

时间轮来优化定时器

在raft协议中&#xff0c; 会初始化三个计时器是和选举有关的&#xff1a; voteTimer&#xff1a;这个timer负责定期的检查&#xff0c;如果当前的state的状态是候选者&#xff08;STATE_CANDIDATE&#xff09;&#xff0c;那么就会发起选举 electionTimer&#xff1a;在一定时…

Photoshop如何安装ZXP扩展插件?

Photoshop如何安装ZXP扩展插件呢&#xff1f;有一些小伙伴不会安装&#xff0c;今天介绍两种安装ZXP扩展的方法&#xff0c;希望对能帮助到大家。方法一&#xff1a;手动安装方式1&#xff09;把下载好的.zxp扩展名改为.zip&#xff0c;然后解压。Windows系统&#xff1a;C:\Us…

参考文献去哪里查找,参考文献标准格式是什么

1、参考文献类型&#xff1a; 普通图书[M]、期刊文章[J]、报纸文章[N]、论文集[C]、学位论 文[D]、报告[R]、标准[s]、专利[P]、数据库[DB]、计算机程序[CP]、电 子公告[EB]、联机网络[OL]、网上期刊[J&#xff0f;OL]、网上电子公告[EB&#xff0f;OL]、其他未 说明文献[z]。…

I.MX6ULL_Linux_驱动篇(28) 字符设备驱动

字符设备驱动简介 字符设备是 Linux 驱动中最基本的一类设备驱动&#xff0c;字符设备就是一个一个字节&#xff0c;按照字节流进行读写操作的设备&#xff0c;读写数据是分先后顺序的。比如我们最常见的点灯、按键、 IIC、 SPI&#xff0c;LCD 等等都是字符设备&#xff0c;这…

蓝牙耳机品牌哪个质量好?2023质量好的蓝牙耳机推荐

相较于有线耳机&#xff0c;蓝牙耳机凭借更方便地使用而受到不少人的喜爱&#xff0c;蓝牙耳机各种性能的发展也越来越先进。哪个品牌的蓝牙耳机质量好&#xff1f;针对这个问题&#xff0c;我来给大家推荐几款质量好的蓝牙耳机&#xff0c;一起来看看吧。 一、南卡小音舱蓝牙耳…

接口请求参数异常之@RequestParam

问题 具体问题如下&#xff1a; 正确的如下&#xff1a; 如上两图所示&#xff1a;我们的请求参数是pageNo和pageSize&#xff0c;但是却没有正确显示&#xff0c;则说明我们的接口存在了问题。 分析问题 参数为什么没有正确的显示每页显示条数和当前页数&#xff0c;而是我…

jmeter-定时器

记录下业务中常用的定时器概念以及使用流程&#xff0c;仅供自己学习。 定时器的作用域 1、定时器是在每个sampler&#xff08;采样器&#xff09;之前执行的&#xff0c;而不是之后&#xff08;无论定时器位置在sampler之前还是下面&#xff09;&#xff1b; 2、当执行一个sa…

Apache HTTP Server <2.4.56 mod_proxy 模块存在请求走私漏洞(CVE-2023-25690)

漏洞描述 Apache HTTP Server是一款Web服务器。 该项目受影响版本存在请求走私漏洞。由于intro.xml中存在RewriteRule配置不当&#xff0c;当Apache启用mod_proxy且配置如 RewriteRule “^/here/(.*)” " http://example.com:8080/elsewhere?$1"; http://example.…

Elasticsearch 核心技术(七):IK 中文分词器的安装、使用、自定义字典

❤️ 博客主页&#xff1a;水滴技术 &#x1f680; 支持水滴&#xff1a;点赞&#x1f44d; 收藏⭐ 留言&#x1f4ac; &#x1f338; 订阅专栏&#xff1a;大数据核心技术从入门到精通 文章目录一、安装 IK 分词器方式一&#xff1a;自行下载并解压安装包方式二&#xff1a;…

【前端学习】D3:CSS进阶

文章目录前言系列文章目录1 CSS的三大特性1.1 层叠性1.2 继承性1.3 优先级&#xff08;*&#xff09;2 盒子模型2.1 看透网页布局的本质2.2 盒子模型&#xff08;Box Model&#xff09;的组成2.3 边框&#xff08;border&#xff09;2.3.1 普通边框2.3.2 表格的细线边框2.3.3 边…

【Hello Linux】命令行解释器

作者&#xff1a;小萌新 专栏&#xff1a;Linux 作者简介&#xff1a;大二学生 希望能和大家一起进步&#xff01; 本篇博客简介&#xff1a;使用进程的基础知识和进程控制知识做出一个简单的shell程序 命令行解释器介绍搭架子缓冲区获取命令如何从标准输入中获取字符串解析命令…

Python3 爬虫实战教程 ,网页审查元素【Python学习连续,请关注】

在讲解爬虫内容之前&#xff0c;我们需要先学习一项写爬虫的必备技能&#xff1a;审查元素&#xff08;如果已掌握&#xff0c;可跳过此部分内容&#xff09;。1、审查元素在浏览器的地址栏输入URL地址&#xff0c;在网页处右键单击&#xff0c;找到检查。(不同浏览器的叫法不同…

爬虫(三)selenium

文章目录1. Selenium 安装2. Selenium 基本功能2.1 初始化浏览器2.2 其他功能3. 查找元素3.1 八大定位方法3.2 查找相对元素3.3 键盘事件4. 元素方法5. JS执行运行环境&#xff1a; selenium4.7.2 1. Selenium 安装 Selenium是一个用于Web应用程序测试的工具。Selenium测试直接…

成都欢蓬电商:抖音带话题春日好物节活动规则

抖音带话题“春日好物节”&#xff0c;投稿瓜分优质内容激励&#xff0c;快来投稿参与本次抖音活动&#xff01; 一、活动玩法 活动时间&#xff1a;3月3日-3月16日 活动形式&#xff1a; 玩法说明&#xff1a; 若同一id同时参加获奖&#xff0c;则不重复激励; 因视频投流涉…