通过上一篇文章介绍,我们大致了解了如何在html中使用svg,同时我们也了解到了直接使用svg的不便。这一篇文章我们便简单使用一下D3.js。
通过之前的介绍我们大概知道,在svg中作图,需要使用不少数据来表示坐标点,路径,填充色等等,这是svg图的关键。
第一步,如使用其他js类库一样,我们先引用D3.JS,这一步我就不多说了。
//直接连接最新版本
< script src="http://d3js.org/d3.v4.min.js"></script>
//或者下载之后引用
< script src="/Script/d3.js"></script>
我们之前说了,svg作图中,重要的是“数据”,所以,作图的第一步便是把我们希望使用的“数据”转变为在svg中可使用的数据。转化数据这一步,在使用d3.js的时候,一般会交给“生成器”去做。然后再使用转化好的数据创建图像。
所以总结起来一般步骤为:
1.创建生成器
2.转化数据
3.绘制
那我们来试一下,目标是使用d3.js绘制之前直接使用svg做的圆环。
第一步,创建一个arc生成器。
var arc = d3.arc();
第二步,转换数据。
//原始数据
//存在一个对象之中,假设我们要接受后台的数据,接受了直接放在对象中也很方便。
var myData = {
innerRadius: 80,//内半径,如果要画圆,设为0
outerRadius: 100,//外半径
startAngle: 0,//起始角度,此处使用弧度表示
endAngle: 2*Math.PI//结束角度
};
//数据转化
var outData = arc(myData);
//如果想查看转换之后的数据,可以添加一个alert方法进行查看。
//alert(outData);
第三步,绘制
//使用d3.js选择器选择一个节点,插入svg元素
var svg = d3.select("body")//选择body节点
.append("svg")//添加svg节点
.attr("width", 400)//设置svg节点的宽度
.attr("height", 400);//设置高度
//在svg中绘制
svg.append("g")//添加g元素
.attr("transform", "translate(" + (400 / 2) + "," + (400 / 2) + ")")//设置图像在svg中的位置
.append("path")//添加路径元素
.attr("fill", "#00000")//填充颜色,黑色
.attr("d", outData);//加入转化后的数据
至此,我们的圆环便画好了。在讲d3.js的选择器之前便直接讲这个小demo,大家可能会有疑惑,但是我认为先自己写出一个小图像会提高学习的积极性。
请记住这三个步骤,在使用d3.js的过程中,几乎所有的作图都经过这三个步骤,不管是简单的还是复杂的图形。
**参考:
http://github.com/d3/d3-shape/blob/master/README.md#arcs**
我的原文网址:
注:题图来源于网络
原网址: 访问
创建于: 2023-01-13 15:52:29
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
个人博客-leapMie CSDN博客 - 舍其小伙伴 稀土掘金 Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 流星007
最新评论