区域生成器(Area Generator)
 
区域生成器(Area Generator)用于生成一块区域,使用方法与线段生成器类似。线段生成器地址:数据访问器有x()、x0()、x1()、y()、y0()、y1()六个,数量很多,但不许要全部使用。举个例子:
 
      var width = 600;            //SVG绘制区域的宽度
var height = 500; //SVG绘制区域的高度 //定义画图区域svg
var svg = d3.select("#body")
.append("svg")
.attr("width",width)
.attr("height",height) //定义数据
var dataList = [80,120,130,70,60,90]
//创建一个区域生成器
var areaPath = d3.svg.area()
.x(function(d,i){return 50 + i * 80})
.y0(function(d,i){return height/2})
.y1(function(d,i){return height/2 - d}) //添加路径
svg.append("path")
.attr("d",areaPath(dataList)) //使用了区域生成器
.attr("stroke","black") //线段的颜色
.attr("stroke-width","3px") //线段的宽度
.attr("fill","yellow") //填充的颜色
 
上面代码定义了一个数组dataList和一个区域生成器areaPath。此区域生成器定制了三个访问器:x()、y0()、y1()。将areaPath当中函数使用,areaPath(dataList)返回的字符串直接作为<path>元素的d的值使用。结果如图: 
 
 
上图中,上边界的折现是数组dataList中各值得反映。根据访问器的设定,可得到以下数值(height的值是500)
当d = 80,i = 0 时,x等于50, y0等于250, y1等于170。
当d = 120,i = 1 时,x等于50 + 1 * 80, y0等于250, y1等于130。
以此类推。
 
下图展示了各访问器的意义,x是各段的x坐标,y0是区域的下限坐标,y1是区域的上限坐标。如果不定制访问器,默认是:
x为d[0],y0为0,y1为d[1]。此外还有x0()、x1()、y()三个访问器,意义类似,如果需要制作上图的横向图需要用到。
 
 
 
与线段生成器类似,区域生成器也有interpolate()、tension()、defined()这些方法,意义相同。通过设定interpolate,两点之间的插值会发生相应变化,规则与线段生成器一样。但是,某些模式是区域生成器里没有的,如linear-closed。因为区域本身就是闭合的,所以不需要了。接下来给大家展示一下step和basis两种插值模式:
 
step插值模式 :
 
      var width = 600;            //SVG绘制区域的宽度
var height = 500; //SVG绘制区域的高度 //定义画图区域svg
var svg = d3.select("#body")
.append("svg")
.attr("width",width)
.attr("height",height) //定义数据
var dataList = [80,120,130,70,60,90] //step插值模式
var areaPath = d3.svg.area()
.interpolate("step")
.x(function(d,i){return 50 + i * 80})
.y0(function(d,i){return height/2})
.y1(function(d,i){return height/2-d}) //添加路径
svg.append("path")
.attr("d",areaPath(dataList)) //使用了区域生成器
.attr("stroke","black") //线段的颜色
.attr("stroke-width","3px") //线段的宽度
.attr("fill","yellow") //填充的颜色
 
效果图 :
 
 
 
basis插值模式 :
 
       var width = 600;            //SVG绘制区域的宽度
var height = 500; //SVG绘制区域的高度 //定义画图区域svg
var svg = d3.select("#body")
.append("svg")
.attr("width",width)
.attr("height",height) //定义数据
var dataList = [80,120,130,70,60,90] //basis插值模式
var areaPath = d3.svg.area()
.interpolate("basis")
.x(function(d,i){return 50 + i * 80})
.y0(function(d,i){return height/2})
.y1(function(d,i){return height/2 - d}) //添加路径
svg.append("path")
.attr("d",areaPath(dataList)) //使用了区域生成器
.attr("stroke","black") //线段的颜色
.attr("stroke-width","3px") //线段的宽度
.attr("fill","yellow") //填充的颜色
 
效果图 :
 
 
在需要生成折现或曲线下方的面积的时候,可以考虑使用区域生成器。
 
 

D3.js 区域生成器 (V3版本)的更多相关文章

  1. D3.js 线段生成器 (V3版本)

    线段生成器 与线段生成器相关的方法: d3.svg.line() //创建一个线段生成器.   line(data) //使用线段生成器绘制data数据.   line.x([x]) //设置或获取线 ...

  2. D3.js 弦生成器(V3版本)

    弦生成器(Chord Generator)   弦生成器(Chord Generator)根据两段弧来绘制弦,共有五个访问器,分别为source().target().radius().startAn ...

  3. D3.js 动画 过渡效果 (V3版本)

    一 . 过渡的启动   启动过渡效果,与以下四个方法相关:   d3.transition([selection],[name]) //创建一个过渡对象.但是由于每个选择集中都有transition( ...

  4. D3.js(v3)+react 制作 一个带坐标与比例尺的柱形图 (V3版本)

    现在用D3.js + react做一个带坐标轴和比例尺的柱形图.我已经尽力把代码全部注释上了,最后我也会把完整柱形图代码奉上.如果还有疑惑的,可以去翻看一下我之前介绍的方法,以下方法都有介绍到. 还有 ...

  5. 交互式数据可视化-D3.js(四)形状生成器

    使用JavaScript和D3.js实现数据可视化 形状生成器 线段生成器 var linePath = d3.line() - 使用默认的设置构造一个 line 生成器. linePath.x() ...

  6. D3.js的v5版本入门教程(第十三章)—— 饼状图

    D3.js的v5版本入门教程(第十三章) 这一章我们来绘制一个简单的饼状图,我们只绘制构成饼状图基本的元素——扇形.文字,从这一章开始,内容可能有点难理解,因为每一章都会引入比较多的难理解知识点,在这 ...

  7. D3.js的v5版本入门教程(第十二章)—— D3.js中各种精美的图形

    D3.js的v5版本入门教程(第十二章) D3中提供了各种制作常见图形的函数,在d3的v3版本中叫布局,通过d3.layout.xxx,来新建,但是到了v5,新建一个d3中基本的图形的方式变了(我也并 ...

  8. D3.js的v5版本入门教程(第十一章)——交互式操作

    D3.js的v5版本入门教程(第十一章) 与图形进行交互操作是很重要的!所谓的交互操作也就是为图形元素添加监听事件,比如说当你鼠标放在某个图形元素上面的时候,就会显示相应的文字,而当鼠标移开后,文字就 ...

  9. D3.js的v5版本入门教程(第十章)

    在这一章我们干点有趣的事——让我们上一章绘制的图表动起来,这样岂不是很有意思 为了让图表动起来,我们还是需要以下新的知识点 .attr(xxx) .transition() .attr(xxx),tr ...

随机推荐

  1. Maven远程仓库地址

    https://repo1.maven.org/maven2/ http://maven.jahia.org/maven2/ http://maven.aliyun.com/nexus/content ...

  2. vim的基本快捷操作(二)——可视模式

    va{ 选中{}中间内容,包括{} va[ 选中[]中间内容,包括{} va( 选中()中间内容 ,包括{} vi< 选中<>中间内容,包括<> 将上面的a换成i,就不包 ...

  3. android中使用MediaPlayer和SurfaceView播放视频

    package com.test.video; import java.io.IOException; import android.media.AudioManager; import androi ...

  4. 不用 PS 和 AI,5个网站能做出更好看的设计

    要完成漂亮的设计,一定要掌握 PS.AI.Sketch 等专业的做图工具才可以.其实,现在有很多网站可以帮助不会专业设计工具的我们,做出很多很漂亮的设计,完成自己的设计需求.今天,我们就来介绍一下这些 ...

  5. 【转】网站SEO优化中网站的三大标签指的是什么?

    对于很多刚刚接触SEO的新手朋友来说,会经常听到别人提及网站的三大标签.那么,具体什么是网站的三大标签呢?其实网站的三大标签指的就是title.keywords.description,通俗一点也可以 ...

  6. LINUX搭建网站环境教程

    安装Mysql yum install mysql-server -y 启动Mysql service mysqld restart 此实验使用 mysql 默认账户名和密码,您也可以设置自己的 My ...

  7. 使用mybatis时,sql查出来的结果映射不进逆向工程生成的该模型

    为了逆向工程生成驼峰效果,我们会在两个单词中间加_,但是在mybatis中,写sql语句时,要加别名,使别名和你逆向工程生成的该数据模型里面的属性名一致,否则查出来的结果映射不进去.

  8. Centos6安装破解JIRA7.3.8

    jira是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪(bug管理).客户服务.需求收集.流程审批.任务跟踪.项目跟踪和敏捷管理等工作领域. 好了言归正传: 安装jira之前我 ...

  9. JMeter 并发压力测试

    一,下载JMeter http://jmeter.apache.org/download_jmeter.cgi 二,创建默认配置 可以不用配置相同参数. 测试计划:右键添加线程组 线程组:右键添加  ...

  10. KindEditor在eclipse里的配置方法

    KindEditor介绍: kindEditor是一款国产富文本编辑器,类似fckeditor和目前比较流行的百度Ueditor.其产品官方网站为http://kindeditor.net/ Kind ...