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开课复习-10/16
import random # random 随机数模块 # print(random.random()) #----float 大于0且小于1之间的小数# print(random.choice([ ...
- springboot 增加过滤器方法
在访问服务器时,我们需要控制用户是否允许权限,这个时候可以使用过滤器. 在springboot 配置过滤器的方法如下: 编写过滤器代码: package com.neo.filter; import ...
- CHAPITRE III
Il me fallut longtemps pour comprendre d'où il venait. Le petit prince, qui me posait beaucoup de qu ...
- springboot+cfx实现webservice功能
一.开发服务端 1.新建工程 cfx-webservice ,最终的完整工程如下: pom.xml如下: <?xml version="1.0" encoding=" ...
- [小结]了解innodb锁
原创文章,会不定时更新,转发请标明出处:http://www.cnblogs.com/janehoo/p/5603983.html 背景介绍: innodb的锁分两类:lock和latch. 其中la ...
- 图片轮滚形式A
思想解读: 一共有5幅图片,初始时只显示一幅,其余四幅隐藏.然后使用trigger设置右下角的点击事件,根据点击的索引显示某幅图片.原理不算复杂. 结论: trigger的使用,模拟点击 层淡入淡出函 ...
- [HTML5] 颜色选择器的操作[input type='color'....]
一.点击事件和获取颜色值 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- Ng第十一课:机器学习系统的设计(Machine Learning System Design)
11.1 首先要做什么 11.2 误差分析 11.3 类偏斜的误差度量 11.4 查全率和查准率之间的权衡 11.5 机器学习的数据 11.1 首先要做什么 在接下来的视频将谈到机器学习系 ...
- _ZNote_编程语言_Qt_信号槽实现_拖拽方式使用控件
所谓的信号槽,实际上就是观察者模式. 当某个事件发生后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal). 这种发出信号是没有目的的,类似于广播.如果对象对这个信号感兴趣,它就会使 ...
- .net MongoDB使用
.net平台的MongoDB使用 CRL快速开发框架系列教程十二(MongoDB支持) MongoDB数据库 mongo-csharp-driver