初识数据可视化工具D3

D3.js拳击游戏:数据可视化的新突破 简介:本项目展示了D3.js库在数据可视化之外的应用潜力,通过一个互动性的拳击游戏,实现了数据绑定、用户交互和动态图形更新。游戏利用JavaScript和D3.js的强大功能,结合SVG和HTML/CSS,演示了如何创建复杂的可视化效果。开发者需要深入了解D3.js API,以实现游戏逻辑和交互功能,包括数据绑定、事件监听、动画、SVG图形设计和实时数据更新。 阅读详情


D3(Data Driven Document)即数据驱动文档,是JS图形可视化工具,在Github上已有73000多star,是目前最流行的JS可视化库之一。使用D3可以实现更加灵活且富有变化的图形。在使用Echarts的配置项就可以完成绘图,而D3需要自己造轮子,手动实现可视化的每一处细节,虽然门槛更高、难度更大,但是使用起来更加灵活自由,能够实现更为复杂多样的可视化效果。

通过使用数据可视化工具D3,完成一个两种模式分布的字母排列

一、引入方式

1、通过官网下载js文件

<script src="d3.v7.min.js"></script>

2、通过CDN引入

<script src="https://d3js.org/d3.v7.min.js"></script>

二、使用svg元素

准备好用于D3画图的svg,宽960像素、高600像素。g是svg元素的一种,后续操作都在g元素上进行。

<!-- 用于D3画图的宽960像素,高600像素的svg -->
	<svg width="960" height="600" style="margin:40px;">
		<!-- g是svg元素的一种 -->
		<g></g>
	</svg>	

三、准备编写JS代码

<script>
$(document).ready(function() {
});
<script>

四、添加驱动D3可视化数据

1、可视化效果会呈现两种不同的状态,定义一个mode变量

2、再定义一个alphabet字符串,其内容是26个英文字母的大小

3、随机地从alphabet中选取200个字母并添加到数组chars中,作为驱动D3进行可视化的数据

4、使用d3.select()选择HTML中的svg标签并保存为变量便于后续使用

5、使用attr()函数获取svg标签的宽度和高度。

// 定义一个变量mode,用于可视化呈现两种不同的状态
	var mode = true;
	// 定义一个字符串alphabet,其内容是26个英文字母的大小写
	var alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
	var chars = [];
	// 随机从alphabet中选取200个字母并添加到chars数组中,作为驱动D3进行可视化的数据
	for (var i = 0; i < 200; i++) {
		chars.push(alphabet[Math.floor(Math.random() * alphabet.length)]);
	}
	// 使用d3,select()选择HTML中的svg标签并保存为变量便于后续使用
	var svg = d3.select('svg');
	// 使用attr()函数获取svg标签的宽度
	var width = svg.attr('width');
	// 使用attr()函数获取svg标签的高度
	var height = svg.attr('height');

五、操作svg元素

selectAll()函数用于选择DOM元素,data()函数用于绑定数据,append()函数用于添加数据

svg.select('g')
		// selectAll()函数用于选择DOM元素
		.selectAll('text')
		// data()函数用于绑定数据
		.data(chars)
		.enter()
		//append()函数用于添加数据
		.append('text')
		.text(function(d) {
			return d;
		}).attr('transform', function(d, i) {
			return 'translate(' + (i * width / chars.length) + ',' + (height /
				2 + (height - 40) * Math.sin(i * 0.1) / 2) + ')';
		}).attr('font-size', function(d) {
			return Math.floor(10 + 15 * Math.random());
		}).attr('fill', '#333')
		.attr('fill-opacity', function(d) {
			return Math.random() * 0.6 + 0.4;
		});

		$('span').click(function(event) {
			if (mode) {
				fly(mode);
				$(this).text('站队');
				mode = false;
			} else {
				fly(mode);
				$(this).text('解散');
				mode = true;
			}
		});

六、为按钮span绑定点击事件响应函数

$('span').click(function(event) {
			if (mode) {
				fly(mode);
				$(this).text('站队');
				mode = false;
			} else {
				fly(mode);
				$(this).text('解散');
				mode = true;
			}
		});

七、fly()函数

1、通过attr()函数设置每个text标签的位置,有两种模式,一种为随机打乱,一种为按正弦分布

2、transition()表示更改属性时使用过渡效果

3、delay()用于设置过渡的延时,使用匿名函数让延时和数据在数组中的序号成正比

4、duration()用于设置过渡的持续时间。

function fly(param) {
			d3.select('svg g')
				.selectAll('text')
				// transition()函数表示更改属性时使用过渡效果
				.transition()
				// delay函数用于设置过渡的延时
				.delay(function(d,i){
					return i * 2;
				})
				// duration函数用于设置过渡的持续时间
				.duration(600)
				.attr('transform', function(d,i){
					if(mode) {
						return 'translate(' + (width-40) * Math.random() + ',' + 
							(height - 40) * Math.random() + ')';
					} else {
						return 'translate(' + (i* width/ chars.length) + ',' + (
							height / 2 + (height - 40) * Math.sin(i *0.1)/2)+
						')';
					}
				});
		}

八、成果展示

alphabet-001
字母按正弦样式排列
alphabet-002
按下按钮后,字母随机分布

九、总结

通过此次项目使用D3的选择DOM元素和绑定数据,数据添加、更新DOM元素的操作,使用D3一般遵循以下流程:

  • 为DOM元素绑定数据
  • 利用数据确定DOM元素的内容和外观等属性
  • 当数据发生变化时,相应地更新DOM元素
手把手教你用TP4056和PMOS管搭建锂电池自动切换电路(含元器件选型指南) 本文详细介绍了如何使用TP4056和PMOS管搭建锂电池自动切换电路,包括核心架构设计、元器件选型指南和PCB布局优化。通过智能充电算法和电源路径切换模块,实现外部供电与锂电池的无缝切换,提升便携式设备的电源管理效率。 阅读详情

相关推荐

深入解析STM32官方库:.c/.h文件功能与应用场景

本文深入解析了STM32官方库中.c和.h文件的核心功能与应用场景。详细剖析了stm32f10x.h、启动文件、外设驱动文件等关键组件的作用,并通过LED闪烁实战演示了如何构建工程、配置文件和调用库函数。文章旨在帮助开发者理解官方库的架构,掌握高效使用技巧,从而降低STM32开发门槛,提升开发效率与代码质量。

weixin_29189377的博客 356

可视化工具D3教程

可视化工具D3教程第1章 D3简介第2章 第一个程序 Hello World第3章 正式进入D3的世界第4章 选择、插入、删除元素第5章 做一个简单的图表第6章 比例尺的使用第7章 坐标轴第8章 完整的柱形图第9章 让图表动起来第10章 理解 update()、enter()、exit()第11章 交互式操作第12章 布局第13章 饼状图第14章 力导向图第15章 树状图第16章 地图可视化学习D......

Blog | Laulliam 7万+

用LTspice仿真CMOS反相器功耗?这份避坑指南能省你3天调试时间

本文详细介绍了如何使用LTspice准确仿真CMOS反相器的功耗,包括动态功耗、短路功耗和静态功耗的测量技巧。通过工程实践指南,帮助电子工程师避开常见陷阱,优化仿真参数设置,提升仿真结果的可靠性,节省调试时间。

w7x8y9z的博客 190

数据可视化:d3

D3库是一个非常强大、灵活的数据可视化工具,可以帮助开发者快速、便捷地创建各种类型的数据可视化图表。本篇文章介绍了D3库的基本概念和使用方法,包括如何创建简单的图表、如何进行数据绑定和处理以及如何添加交互和动画效果等。希望读者能够通过本篇文章了解并掌握D3库的基础知识,从而更好地应用D3库进行数据可视化。

m0_72410588的博客 3148

头歌MySQL数据库实训答案 有目录

头歌java实训答案集数据库部分一条一条的写,可鼠标手动粘贴,除特定命令外未分大小写。 第1关:创建数据库 第2关创建表 第3关:使用主键约束 第4关:外键约束 第5关:添加常用约束 MySQL数据库 - 数据库和表的基本操作(一) 第1关:查看表结构与修改表名 第2关:修改字段名与字段数据类型 第3关:添加与删除字段 第4关:修改字段的排列位置 第5关:删除表的外键约束 MySQL数据库 - 数据库和表的基本操作(二) 第1关:插入数据 第2关:更新数据 第3关:删除数据 MySQL数据库 - 单表查询(

m0_67401761的博客 4万+

深入解析璞致PZ-ZU47DR RFSoC核心板:硬件架构与多通道ADC/DAC设计实战

本文深入解析璞致PZ-ZU47DR RFSoC核心板的硬件架构与多通道ADC/DAC设计实战。作为Xilinx Zynq UltraScale+ RFSoC系列的代表产品,PZ-ZU47DR集成了8通道5GSPS ADC和8通道9.85GSPS DAC,支持直接射频采样,大幅简化射频链路设计。文章详细介绍了其技术优势、设计挑战及实战技巧,为5G小基站、毫米波等应用场景提供高效解决方案。

meat5的博客 842

使用D3.js进行数据可视化

D3.js是一个流行的JavaScript数据可视化库,全称为Data-Driven Documents,即数据驱动文档。它以数据为核心,通过数据来驱动文档的展示和操作。D3.js提供了丰富的API和工具,使得开发者能够创建出各种交互式和动态的数据可视化效果。

m0_73500130的博客 4425

协方差矩阵

对两个类内协方差矩阵进行对角化,可以将它们变换为对角矩阵。这个过程可以通过对每个协方差矩阵进行特征值分解来实现,从而得到它们的特征向量和特征值,进而得到它们的对角矩阵形式。这个过程的意义在于,它可以帮助我们找到一个新的坐标系,使得在这个坐标系下,每个特征之间都是独立的,从而简化了计算。具体来说,当我们使用对角协方差矩阵作为特征向量的坐标系时,它意味着每个特征之间都是相互独立的,从而方便了进一步的分析和处理。在实际应用中,对角化协方差矩阵可以用于降维、特征选择和分类等任务。

m0_55196097的博客 1万+

d3.js mysql_d3js是什么

近年来,可视化越来越流行,许多报刊杂志、门户网站、新闻、媒体都大量使用可视化技术,使得复杂的数据和文字变得十分容易理解,有一句谚语“一张图片价值于一千个字”,的确是名副其实。各种数据可视化工具也如井喷式地发展,D3 正是其中的佼佼者。D3 是什么D3 的全称是(Data-Driven Documents),顾名思义可以知道是一个被数据驱动的文档。听名字有点抽象,说简单一点,其实就是一个 JavaS...

weixin_39862697的博客 367

【AI应用实战-claude】在飞书上接入claudecode进行远程使用(十三)

本文介绍了三种将ClaudeCode接入飞书的方案,包括官方飞书CLI工具(推荐)、cc-connect中转工具和MCP协议集成。官方飞书CLI适合自动化办公场景,通过简单配置即可实现消息发送和文档管理;cc-connect适用于远程调用Claude功能,通过飞书群聊触发响应;MCP协议则适合开发者构建复杂工作流。文章提供了详细的操作步骤,并针对不同使用场景给出了选择建议。

1015

【Burp入门第三十三篇】BurpSuite+Proxifier安装配置,实现微信小程序抓包

本文介绍Burp+Proxifier安装配置,实现微信小程序抓包

等风来 5873

基于D3的数据可视化学习

基于D3的数据可视化学习 近年来,可视化越来越流行,许多报刊杂志、门户网站、新闻媒体都大量使用可视化技术,使得复杂的数据和文字变得十分容易理解。而 D3 正是数据可视化工具中的佼佼者,基于 JavaScript 开发,项目托管于 GitHub。从 D3 诞生以来,不断受到好评,在 GitHub 上的项目仓库排 行榜也不断上升。本项目的目的在于提供一个简单易懂的入门教程,希望读者能够喜欢。 代码仓库 简介与安装 D3 的全称是(Data-Driven Documents),顾名思义可以知道是一个被数据驱

weixin_45377668的博客 4090

零基础学写《扫雷》游戏(Qt扫雷源码)

扫雷游戏是在windows系统中自带的游戏,他的游戏玩法其实很简单,20世纪初期电脑上没有啥游戏可以玩,所以扫雷游戏也算是当时是最常火爆的一个电脑游戏。以下文章详细介绍扫雷游戏的实现。实现语言为C++。

啊渊的专栏 1万+

初识 d3 selection

d3.js是一个用于数据图形化的 javascript库,有点类似于 jQuery.与 jQuery不同的是,它除了能操作 dom以外,还具有数据绑定的功能,这对于动态数据的展示非常友好. 刚开始看 d3的文档会比较难以理解,因为官方文档是按照模块一个一个排列展示的,这种方式对于已经了解 d3的人比较友好,可以直接查看想要的模块,但是对于初识 d3的人不太友好,因为模块之间并不是渐进的关系. 这篇文章让我们先来认识一下 d3 selection模块.

u013235949的博客 1312

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

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

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

XH_jing的博客 1409

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

初识前端数据可视化

目录 概念 前端数据可视化的开发工具 前端三件套 Echarts.js Highcharts.js D3.js Vue.js python 编译器 概念 什么是前端?前端,通俗来说就是网页呈现给我们看的那部分。比如hao123这个页面,就是前端部分 同时,按F12即可查看其前端代码,如图 那什么是可视化呢 ,众嗦粥汁,一些数据就是一些奇奇怪怪的数字,比如xx比率啥的,而把这种奇奇怪怪的数字,转化成图片、表格、柱形图等,能够让我们巧妙的观察数据,就是可视化了。 如图...

qq_62102968的博客 5283

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【一起学d3.js】(一)

一起学d3.js

weixin_44045702的博客 3028

D3.js(一) ------初识

D3.js简介 D3.js是一个强大的数据可视化js语言,可以利用svg在网页上展示各种精美的矢量图. D3 提供了各种简单易用的函数,大大简化了 JavaScript 操作数据的难度。由于它本质上是 JavaScript ,所以用 JavaScript 也是可以实现所有功能的,但它能大大减小你的工作量,尤其是在数据可视化方面,D3 已经将生成可视化的复杂步骤精简到了几个简单的函数,你只需要输...

Missbelover的博客 1万+

可视化库D3.js(1)-入门篇

从今天开始可视化库D3.js\color{red}{D3.js}D3.js的第一章-入门篇咯???? 什么是D3.js D3指的是Data-Driven Documents,js即Javascript,是后缀名。先看看官网上对D3.js库的定义: D3.js is a JavaScript library for manipulating documents based on data.D3 he...

尤尔小屋 1万+

初识D3

相信大多数人对D3.js并不陌生。这是一个由纽约时报可视化编辑 Mike Bostock与他斯坦福的教授和同学合作开发的数据文件处理的JavaScript Library,全称叫做Data-Driven Documents。 D3的应用非常广泛,现在 成为了主流数据可视化工具之一,

风中雪 414

初识 D3.js :打造专属可视化

一、前言 随着现在自定义可视化的需求日益增长,Highcharts、echarts等高度封装的可视化框架已经无法满足用户各种强定制性的可视化需求了,这个时候D3的无限定制的能力就脱颖而出。 如果想要通过D3完成可视化,除了对于D3本身API的学习, 关于web标准的HTML, SVG, CSS, Javascript 和 数据可视化的概念以及标准都是需要学习的。这无疑带来了较高的学习门槛,但这也是值得的,因为掌握D3后,我们几乎可以实现任何 2d 的可视化需求。 本文通过对D3核心模块分析以及进行..

vivo互联网技术 1043

初识d3.js(1)

d3.js基础 获取元素、追加、移除元素

qq_38318589的博客 260

初识d3.js(2) ——简单的条形图

初识d3.js(2) ——简单的条形图、d3.js做条形图

qq_38318589的博客 360

初识D3&svg初始图形元素

初识D3&svg初始图形元素

feeling_time的博客 576

D3.js系列 --- 初识

D3.js(Data-Driven Documents)即被数据驱动的文档,它是一个用于根据数据来操作文档的JavaScript库。相比于echart, antv等其他图表库,它算是一个比较底层的数据可视化工具。它不提供任何一种现成的图表,只做最基础的东西,所有的图表都需要我们在它的库里挑选合适的方法进行构建。在一切即数据的今天,我们更需...

weixin_34365635的博客 168

【D3.js 学习总结】1、初识D3

D3是指数据驱动文档(Data-Driven Documents),根据D3的官方定义: D3.js是一个JavaScript库,它可以通过数据来操作文档。D3可以通过使用HTML、SVG和CSS把数据鲜活形象地展现出来。D3严格遵循Web标准,因而可以让你的程序轻松兼容现代主流浏览器并避免对特定框架的依赖。同时,它提供了强大的可视化组件,可以让使用者以...

weixin_33770878的博客 267
上一篇: ECharts图表组件与FusionCharts图表组件对比
下一篇: Processing基础
极客范儿
极客范儿 新星创作者: 游戏开发技术领域 新星创作者: 游戏开发技术领域 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄12年 1万+粉丝 343原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

极客范儿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值