D3比例尺】的更多相关文章

D3中有个重要的概念就是比例尺.比例尺就是把一组输入域映射到输出域的函数.映射就是两个数据集之间元素相互对应的关系.比如输入是1,输出是100,输入是5,输出是10000,那么这其中的映射关系就是你所定义的比例尺. D3中有各种比例尺函数,有连续性的,有非连续性的,本文对于常用比例尺进行一一介绍. 1. d3.scaleLinear() 线性比例尺 使用d3.scaleLinear()创造一个线性比例尺,而domain()是输入域,range()是输出域,相当于将domain中的数据集映射到ra…
.domain([, ]) 定义域范围 .range([, ]) 值域范围 var scale = d3.scale.linear() .domain([, ]) .range([, ]); 将100-500的范围映射到10-350范围当中 d3.max(dataset,function(d){]}); 返回最大的x轴 var xScale = d3.scale.linear() .domain([, d3.max(dataset, function(d) { ]; })]) .range([,…
目录 一.学习D3我必须要学习好SVG矢量图码? 二.如何理解D3给Dom节点绑定数据时的Update.Enter和Exit模式 三.D3绑定数据时用datum与data有什么不一样? 四.SVG图中用attr来设置属性和用style来设置样式时,用style来设置样式的权重会更高 五.D3使用链式写法时,写完transition动画后不能链着继续写append添加元素操作 六.如何给path设置缓动? 七.D3普通的缓动动画 八.给节点添加title,鼠标mouseover显示普通提示文本效果…
最近我一直在做数据可视化的前端工作,我用的最多的绘图工具是d3.d3有点像photoshop,功能很强大,例子也很多,但是学习成本也不低,做项目是需要较大人力投入的.3月底由在亚马逊工作的同学介绍下使用了一下echart,一个由百度前端发起的canvas国产类库(官网:http://echarts.baidu.com/index.html).这个echart其实是在canvas类库zrender的基础上做的主题图库,优点有数据驱动,图例丰富,功能强大,支持数据拖拽重计算,数据区域漫游,全中文文档…
1.线性比例尺 d3.scale.linear()   创建一个线性比例尺           .domain([0,500]) 定义域           .range([0,1000]) 值域 linear(x)  输入定义域 返回 值域 linear.invert(y) 输入值域,返回定义域 linear.domain([numbers]) 设定或获取定义域 linear.range([values])设定或获取值域 linear.rangeRound([valuses]) 四舍五入,结果…
比例尺是 D3 中很重要的一个概念,直接用数值的大小来代表像素不是一种好方法 一.为什么需要比例尺 制作一个柱形图,会有一个数组:var dataset = [ 250 , 210 , 170 , 130 , 90 ]; 绘图时,直接使用 250 给矩形的宽度赋值,即矩形的宽度就是 250 个像素.此方式非常具有局限性,如果数值过大或过小,例如: var dataset_1 = [ 2.5 , 2.1 , 1.7 , 1.3 , 0.9 ]; var dataset_2 = [ 2500, 21…
上一章中使用了一个很重要的概念 — 比例尺( scale ),本节将解说其使用方法. 1. 最大值和最小值 在介绍比例尺( scale )之前,先介绍两个经常和比例尺一起出现的函数,在[第3章]中也出现了. d3.max() d3.min() 这两个函数用于求一个数组中的最大值和最小值,如果是一维数组,使用方法如下: var dataset = [ 30, 20 , 52 , 2 , 11 ]; var result = d3.max( dataset ); 变量 result 中保存的是数组…
// d3中的比例尺也有定义域和值域,分别是domain和range,开发者需要指定domain和range的范围,如此即可以得到一个计算关系: // 线性比例尺:能将一个连续的区间映射到另一区间,要解决柱形图宽度的问题,就需要线性比例尺: // 如: var dataset = [1.2, 2.3, 0.9, 1.5, 3.3]; var min = d3.min(dataset) var max = d3.max(dataset) var linear = d3.scale.linear()…
转载请注明出处! 比例尺简述: 比例尺是一组把输入域映射到输出范围的函数. 一般来说数据集中的值不可能恰好与图表中的像素尺度一一对应.比例尺就是把这些数据值映射到可视化图形中使用的新值的便捷手段. D3的比例尺就是那些你定义的带有参数的函数. 听到比例尺有些人就会想到最终图表中一系列的刻度线,对应一系列的值,不要搞错,这些刻度显示坐标轴的一部分,而坐标轴只是比例尺的一种形象的表示.比例尺实际上代表的是一种数学关系,不可能直接输出可见的图形.比例尺和坐标轴是两种不同但相关的东西. 下面我们只讨论线…
比例尺是 D3 中很重要的一个概念.绘制图形时直接用数值的大小来代表像素不是一种好方法,本章正是要解决此问题. 一.为什么需要比例尺 上一章制作了一个柱形图,当时有一个数组,绘图时,直接使用 250 给矩形的宽度赋值,即矩形的宽度就是 250 个像素.此方式非常具有局限性,如果数值过大或过小,例如: var dataset_1 = [ 2.5 , 2.1 , 1.7 , 1.3 , 0.9 ]; , , , , ]; 对以上两个数组,绝不可能用 2.5 个像素来代表矩形的宽度,那样根本看不见:也…
本章使用路径生成器来绘制一个折线图.以中国和日本的GDP数据为例:   //数据 var dataList = [ { coountry : "china", gdp : [ [2000,11920],[2001,13170],[2002,14550],[2003,16500],[2004,19440],[2005,22870], [2006,27930],[2007,35040],[2008,45470],[2009,51050],[2010,59490],[2011,73140],…
D3.js的v5版本入门教程(第七章) 比例尺在D3.js中是一个很重要的东西,我们可以这样理解d3.js中的比例尺——一种映射关系,从domain映射到range域(为什么会是domain和range呢?等一下你就会看到,因为我们在建立比例尺是常常会用到domain()和range()两个函数,当然不是绝对的,D3中有很多类型的比例尺) 下面介绍在本套教程中常用的两种比例尺 线性比例尺序数比例尺        线性比例尺 domain域和range域都可以连续变化 <body> <sc…
线性比例尺 线性比例尺是常用比例尺常用方法有: var linear = d3.scaleLinear() - 创建一个定量的线性比例尺. linear.domain([numbers]) - 定义或获取定义域 linear.range([values]) - 定义或获取值域 linear(x) - 输入一个定义域内的值,返回一个值域的值 linear.invert(y) - 输入一个值域的值,返回一个定义域的值 linear.rangeRound([values]) - 代替range(),…
上一章做了柱形图,https://www.cnblogs.com/littleSpill/p/10835041.html   这一章做散点图.   散点图(Scatter Chart),通常是一横一竖两个坐标轴,数据是一组二维坐标,分别对应两个坐标轴,与坐标轴对应的地方打上点.由此可以猜到,需要的元素包括circle(圆)和axis(坐标轴).需要进行可视化的数据有:   //圆心数据 var center = [ [0.5,0.5],[0.7,0.8],[0.4,0.9], [0.11,0.3…
现在用D3.js + react做一个带坐标轴和比例尺的柱形图.我已经尽力把代码全部注释上了,最后我也会把完整柱形图代码奉上.如果还有疑惑的,可以去翻看一下我之前介绍的方法,以下方法都有介绍到. 还有数据都是自己定义的假数据,大家参考一下制作方法即可. 首先定义柱形图的数据.绘图区域的宽高.和上下左右的边距: var width = 600; //SVG绘制区域的宽度 var height = 500; //SVG绘制区域的高度 //定义数据 var dataList = [50,43,120,…
坐标轴(Axis)   坐标轴(Axis)在很多图表中都可见到,例如柱形图.折线图.散点图等.坐标轴由一组线段和文字组成,坐标轴上的点由一个坐标值确定.但是,如果使用SVG的直线和文字一笔一画的绘制坐标轴,工作量将会极其的大.D3提供了坐标轴的制作方法,需要之前所给大家讲的比例尺一起使用.开发者仅仅需要几行代码,就能够生成各式各样的坐标轴.   与坐标轴相关的方法有:   d3.svg.axis() : 创建一个默认的新坐标轴.   axis(selection) : 将此坐标轴应用到指定的选择…
上一章介绍了阈值比例尺:https://www.cnblogs.com/littleSpill/p/10825038.html.到目前所有的定量比例尺已经介绍完了. 现在给大家介绍一下序数比例尺. 定量比例尺的定义域都是连续的,值域有连续的也有离散的.序数比例尺(Ordinal Scale)的定义域和值域都是离散的.   现实中会有这样的需求,通过输入一些离散的值(如名称.序号.ID等),要得到另一些离散的值(如颜色等),这种时候就要考虑序数比例尺了. 序数比例尺的方法有:   d3.scale…
定量比例尺 : 数学上有函数的概念,不是编程中所说的函数,如线性函数.指数函数.对数函数等,而指的是一个量随着另一个量的变化而变化.例如有一下线性函数 : y=2x+1该函数在二维坐标系中绘制出来的图形是一条直线,如果限制x的范围为[0,2],则可计算得到y的范围为[1,5].x的范围[0,2]称为该函数的定义域,y的范围称为该函数的值域.根据x计算得到y的方法称为对应法则.定义域.值域.对应法则称为函数的三要素.   在数据可视化中,常需要像上述函数一样,将一个量转换为另一个量.D3提供了这样…
直接上代码了,这里的一些函数用的是之前我自己封装的函数(包括attr的obj支持和节点数量和数据数量的自动匹配),若有不明白的,可以查看之前的博客: 页面的效果如下: 接下来继续添加坐标轴: 最终:…
比例尺 比例尺基本内容 比例尺是一组把输入域映射为输出范围的函数.任意数据集中的值不可能恰好与图表中的像素尺度一一对应.比例尺就是把这些数据值映射为可视化图形中使用的新值的便捷手段.D3的比例尺就是那些你定义的带有参数的函数.定义好之后,就可以调用这些比例尺函数,传入值,它们就能返回按比例生成的输出值. 比例尺的输入值域(input domain)指可能的输入值的范围. 比例尺的输出范围(output range)指输出值可能的范围,一般以用于显示的像素为 单位. 其实比例尺就是归一化的概念.…
一.基本的环境搭建(和使用其他框架或js库一样) 1.建立一个工程: 2.在html文件中引入D3的文件: 附上git地址:https://github.com/d3/d3/wiki  二.建立图表 1.线性图表: 画线条的思路(下面代码都在js文件中编写,并在htm文件中引入自己写的该js文件): 1)设置存放曲线的位置 给html文件中的container容器添加节点svg,并为svg节点设置宽.高. 在svg节点中添加一个g节点(存放线条)并设置其位置(用了css3中的位移属性). 2)画…
比例尺有很多种类型,每一种类型都有各自的方法. 常用的是linear log oridinal linear .rangeRound(): 输出的值 四舍五入 .copy():返回一个独立的副本 .tickFormat():一般加载axis .ticks() .nice() .interpolate(): 一般line用的比较多,linear用的比较少. .invert(y) linear(x) log .base():指定底数 其他都类似 oridinal 1.d3.scale.categor…
<html> <head> <meta charset="utf-8"> <title>第三课:为柱形图添加坐标轴</title> <style> .axis path, .axis line{ fill: none; stroke: black; shape-rendering: crispEdges; } .axis text { font-family: sans-serif; font-size: 11px…
最近项目组加班比较严重,D3的博客就一拖再拖,今天终于不用加班了,赶紧抽点时间写完~~ 今天就将D3数据的更新及动画写一写~~ 接着之前的博客写~~ 之前写了一个散点图的例子,下面可以自己写一个柱状图的例子. 我就直接给代码了,和散点图差不多~~ var margin = {top: 20, right: 20, bottom: 30, left: 40}, width = 960 - margin.left - margin.right, height = 500 - margin.top -…
一直想写写D3,觉得D3真心比较强大,基本上你能想出来的图表都能绘制出来,只不过使用起来比前几个要稍麻烦一点. 正好最近读完了<数据可视化实战>,将关于D3的知识梳理了一遍,写这篇博客记录一下. D3 是一个缩写,它的全称叫Data-Driven Documents(数据驱动的文档).D3是基于数据操作文档的JavaScript库.D3帮助你使用HTML,SVG和CSS生动的展现数据.D3不需要将你使用某个特定的框架,D3重点在于对主流浏览器的全兼容,同时结合了强大的虚拟化组件,以数据驱动的方…
花了大半天看了一个八十几行的代码..心累 力导向图是之前就有画过很多次的东西,但是这次的代码看上去很陌生,然后发现是D3更新了4.0.... 先贴代码 var svg = d3.select("svg"), width = +svg.attr("width"), height = +svg.attr("height"); var color = d3.scaleOrdinal(d3.schemeCategory20); var simulatio…
D3(Data-Driven Documents)是一个用于网页作图.生成互动图形的JavaScript函数库. 官网:http://d3js.org/ 下载: cdn:<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js" charset="utf-8"></script> d3.zip 1.hello world d3.select('body') /…
1.数据 有如下数据,需要可视化: var dataset = [ 30 , 10 , 43 , 55 , 13 ]; 这样的值是不能直接绘图的.例如绘制饼状图的一个部分,需要知道一段弧的起始角度和终止角度,这些值都不存在于数组 dataset 中.因此,需要用到布局,布局的作用就是:计算出适合于作图的数据.这个过程称为数据转换 2.布局(数据转换) 定义一个布局,返回值赋给变量 pie,此时 pie 可以当做函数使用. var pie = d3.layout.pie(); 将数组 datase…
与图表的交互,指在图形元素上设置一个或多个监听器,当事件发生时,做出相应的反应. 一.什么是交互 交互,指的是用户输入了某种指令,程序接受到指令之后必须做出某种响应.对可视化图表来说,交互能使图表更加生动,能表现更多内容. 例如,拖动图表中某些图形.鼠标滑到图形上出现提示框.用触屏放大或缩小图形等等. 用户用于交互的工具一般有三种:鼠标.键盘.触屏. 二.如何添加交互 对某一元素添加交互操作十分简单,代码如下: var circle = svg.append("circle"); ci…
D3 支持制作动态的图表.有时候,图表的变化需要缓慢的发生,以便于让用户看清楚变化的过程,也能给用户不小的友好感. 一.什么是动态效果 绘制完成后不再发生变化的,这是静态的图表. 动态的图表,是指图表在某一时间段会发生某种变化,可能是形状.颜色.位置等,而且用户是可以看到变化的过程的. 例如,有一个圆,圆心为 (100, 100).现在我们希望圆的 x 坐标从 100 移到 300,并且移动过程在 2 秒的时间内发生. 这种时候就需要用到动态效果,在 D3 里我们称之为过渡(transition…