D3.js (v3)+react框架 基础部分之认识选择集和如何绘制一个矢量图
首先需要下载安装d3.js : yarn add d3
然后在组建中引入 : import * as d3 from 'd3'
然后定义一个方法,在componentDidMount()这个钩子函数中调用即可。
然后如何绘制一个矢量图 :
render() {
return (
<div id="drawSVG" ></div>
);
}
先定义一个id为drawSVG的div标签。然后写一个方法,来在这个div中绘制矢量图。
oneMethod() { //定义一个方法
var width = ; //定义svg的宽度
var height = ; //定义svg的高度
var svg = d3.select("#drawSVG") //选择容器
.append('svg') //将svg放入容器里面
.attr("width", width) //设置svg的宽度
.attr("height", height) //设置svg的高度
.style("background-color", "red") //设置svg的背景颜色
.style("border-radius", "50%") //设置svg的圆角
svg.append("circle") //在<svg>中添加<circle>标签
.attr("cx", "200px") //设置圆形的x坐标
.attr("cy", "200px") //设置圆形的y坐标
.attr("r", "100px") //设置圆形的半径
.attr("fill", "yellow") //设置圆形的填充色
}
然后在componentDidMount()中调用。
componentDidMount() {
this.oneMethod()
}
最后来看看会显示出什么样的矢量图行呢。。。

全部代码 :
import React, { Component } from 'react';
import * as d3 from 'd3';
class Demo extends Component {
constructor(props) {
super(props);
this.state = {}
}
componentDidMount() {
this.oneMethod()
}
oneMethod() { //定义一个方法
var width = 400; //定义svg的宽度
var height = 400; //定义svg的高度
var svg = d3.select("#drawSVG") //选择容器
.append('svg') //将svg放入容器里面
.attr("width", width) //设置svg的宽度
.attr("height", height) //设置svg的高度
.style("background-color", "red") //设置svg的背景颜色
.style("border-radius", "50%") //设置svg的圆角
svg.append("circle") //在<svg>中添加<circle>标签
.attr("cx", "200px") //设置圆形的x坐标
.attr("cy", "200px") //设置圆形的y坐标
.attr("r", "100px") //设置圆形的半径
.attr("fill", "yellow") //设置圆形的填充色
}
render() {
return (
<div id="drawSVG" ></div>
);
}
}
export default Demo;
什么是选择集 :
d3.select和d3.selectAll返回的对象称为选择集(selection), 添加、删除、设定网页中的元素, 都得使用选择集.
selsect : 返回匹配选择器的第一个元素
d3.select("body") //选择body元素
d3.select("#drawSVG") //选择id为drawSVG的元素
d3.select(".xxx") //选择class为xxx的第一个元素 selectAll: 返回匹配选择器的所有元素
d3.selectAll("p") //选择所有的p元素
d3.selectAll(".xxx") //选择class为xxx的所有元素
d3.selectAll("ul li") //选择ul中所有的li元素
查看选择集的状态有三个函数 :
查看选择集的状态,有三个函数 :
selection.empty() : 如果选择集为空,则返回true。如果不为空,返回false;
selection.node() : 返回第一个非空元素,如果选择集为空,返回null;
selection.size() : 返回选择集中的元素个数;
举例子 :
render() {
return (
<div id="drawSVG" >
<p>窗前明月光</p>
<p>疑是地上霜</p>
<p>举头望明月</p>
<p>低头思故乡</p>
</div>
);
}
oneMethodAgain(){
var paragraphs = d3.selectAll("p")
console.log(paragraphs.empty()) //false
console.log(paragraphs.node()) //<p>窗前明月光</p>
console.log(paragraphs.size()) //
}
以上就是查看选择集的状态。
对于选择集如何添加、插入和删除元素 :
1 对于选择集 , 添加、插入和删除元素 :
2 selection.append(name) :
3 在选择集的末尾添加一个元素,name为元素名称。
4 selection.insert(name,[,before]) :
5 在选择集中的指定元素之前插入一个元素,name是被插入的元素名称,before是css选择器名称。
6 selection.remove() :
7 删除选择集中的元素。
举例子 :
render() {
return (
<div id="drawSVG" >
<p>窗前明月光</p>
<p>疑是地上霜</p>
<p id="plane" >举头望明月</p>
<p>低头思故乡</p>
</div>
);
}
还是这些内容来举例 。
oneMethodAgains() {
var body = d3.select("#drawSVG")
//在id为drawSVG的div中的最末尾添加一个p元素
body.append("p")
.text("静夜思")//内容
.style("color", "red")//字体颜色
//在id为plane的p元素前添加一个p元素
body.insert("p", "#plane")
.text("~~~~") //内容
.style("color", "yellow") //字体颜色
//删除id为plane的元素
var plane = d3.select("#plane")
plane.remove()
}
显示效果分别为 :



如何设定和获取属性 :
设定和获取属性 :
selection.attr(name[,value]) :
设置或获取选择集的属性,name是属性名称,value是属性值。如果省略value,则返回当前的属性值。
selection.classed(name[,value]) :
设定或获取选择集的css类,name是类名,value是一个布尔值。表示是否开启。
d3.select("p")
.classed("xxx",true) //开启xxx类
.classed("sss",false) //不开启sss类
selection.style(name[,value[,priority]]) :
设定或获取选择集的样式,name是样式名,value是样式值;
selection.property(name[,value]) :
设定或获取选择集的属性,name是属性名,value是属性值。如果省略value,则返回属性名。
有部分属性不能用attr()设定和获取,最经典的是文本输入框的value属性,此属性不会再标签中显示。
selection.text([value]) :
设定或获取选择集的文本内容,如果省略value,则返回当前的文本内容。文本内容相当于DOM的innerText,不包括元素内部的标签。
selection.html([value]) :
设定或获取选择集的内部HTML内容,相当于DOM的innerHTML。包括元素内部的标签。
这里就不给大家举例子了,大家有时间可以自己试一下。
希望可以帮到大家~ 谢谢。
D3.js (v3)+react框架 基础部分之认识选择集和如何绘制一个矢量图的更多相关文章
- D3.js(v3)+react框架 基础部分之数据绑定及其工作过程与绑定顺序
数据绑定: 将数据绑定到Dom上,是D3最大的特色.d3.select和d3.selectAll返回的元素的选择集.选择集上是没有数据的. 数据绑定就是使被选择元素里“含有”数据. 相关函数有两个: ...
- D3.js(v3)+react 制作 一个带坐标轴与比例尺的折线图
本章使用路径生成器来绘制一个折线图.以中国和日本的GDP数据为例: //数据 var dataList = [ { coountry : "china", gdp : [ [2 ...
- D3.js(v3)+react 制作 一个带坐标与比例尺的柱形图 (V3版本)
现在用D3.js + react做一个带坐标轴和比例尺的柱形图.我已经尽力把代码全部注释上了,最后我也会把完整柱形图代码奉上.如果还有疑惑的,可以去翻看一下我之前介绍的方法,以下方法都有介绍到. 还有 ...
- D3.js(v3)+react 制作 一个带坐标与比例尺的散点图 (V3版本)
上一章做了柱形图,https://www.cnblogs.com/littleSpill/p/10835041.html 这一章做散点图. 散点图(Scatter Chart),通常是一横一竖 ...
- 【 D3.js 入门系列 --- 2.1 】 关于如何选择,插入,删除元素
在D3.js中,选择元素的函数有两个:select 和 selectAll . 先说明一下它们的区别: select 是选择所有指定元素的第一个 selectAll 是选择指定元素的全部(以用于后面同 ...
- 【 D3.js 入门系列 --- 2.1 】 关于怎样选择,插入,删除元素
本人的个人博客首页为: http://www.ourd3js.com/ ,csdn博客首页为:http://blog.csdn.net/lzhlzz/. 转载请注明出处,谢谢. 在D3.js中,选择 ...
- 【 D3.js 入门系列 — 2 】 绑定数据和选择元素
1. 如何绑定数据 D3 有一个很独特的功能:能将数据绑定到 DOM 上,也就是绑定到文档上.这么说可能不好理解,例如网页中有段落元素<p>,我们可以将整数 5 与 <p>绑定 ...
- 用 D3.js 画一个手机专利关系图, 看看苹果,三星,微软间的专利纠葛
前言 本文灵感来源于Mike Bostock 的一个 demo 页面 原 demo 基于 D3.js v3 开发, 笔者将其使用 D3.js v5 进行重写, 并改为使用 ES6 语法. 源码: gi ...
- D3.js v5 Tutorials
D3.js v5 Tutorials D3.js v5 教程 https://github.com/d3/d3/blob/master/API.md CHANGES https://github.co ...
随机推荐
- python第一类对象,闭包,迭代器
一.第一类对象 第一类对象 -> 函数名 -> 变量名 1.特征: 函数对象可以像变量一样进行赋值 还可以作为列表的元素进行使用 还可以作为返回值返回 还可 ...
- B+树和LSM比较(转)
出处:https://blog.csdn.net/u013928917/article/details/75912045 B+树和LSM比较 在关系型数据库mysql中普遍使用B+树作为索引,在实际中 ...
- C++STL 容器比较
Vector的使用场景:比如软件历史操作记录的存储,我们经常要查看历史记录,比如上一次的记录,上上次的记录,但却不会去删除记录,因为记录是事实的描述. deque的使用场景:比如排队购票系统,对排队者 ...
- 程序员面试50题—sizeof的用法(6)
以下为Windows下的32 位C++程序,请计算sizeof 的值void Func ( char str[100] ){sizeof( str ) = ?}void *p = malloc( 10 ...
- 重启随机游走算法(RWR:Random Walk with Restart)
1 pagerank算法的基本原理 Pagerank算法是Google的网页排名算法,由拉里佩奇发明.其基本思想是民主表决.在互联网上,如果一个网页被很多其他网页所链接,说明它受到普遍的承认和信赖,那 ...
- 好文推荐系列--------(1)bower---管理你的客户端依赖
好文原文地址:http://segmentfault.com/a/1190000000349555 编者注:我们发现了比较有趣的系列文章<30天学习30种新技术>,准备翻译,一天一篇更新, ...
- MySQL 安装与使用(二)
操作系统:CentOS release 5.10 (Final) MySQL版本:5.1.72-community 一.MySQL数据库简单迁移(备份与还原) 参考:http://dev.mysql. ...
- ASP.NET MVC IActionFilter IResultFilter IExceptionFilter/HandleError
一.IActionFilter 1.基本定义 在action的执行前后进行AOP拦截. IActionFilter接口定义如下: public interface IActionFilter { // ...
- 最小生成树Prim poj1258 poj2485 poj1789
poj:1258 Agri-Net Time Limit: 1000 MS Memory Limit: 10000 KB 64-bit integer IO format: %I64d , %I64u ...
- unidbgrid单元格操作
unidbgrid单元格操作 //GRID里回车替换TABfunction cellkeydown(sender, td, cellIndex, record, tr, rowIndex, e, eO ...