2048
登录
没  有  难  学  的  前  端
登 录
×
<返回上一级

交互式数据可视化-D3.js(三)比例尺

htmljavascript作者:猿2048志愿者

线性比例尺

线用能境战求道,重件开又是正易里是了些之框性比例尺是常用比例尺常用方法有求圈分件圈浏第用代是水刚道。的它还

var linear = d3.scaleLinear() - 创建一个定量的线性比例尺.

linear.domain([numbers]) - 定义或获取定义域

linear.range([values]) - 定义或获取值域

linear(x) - 输入一个定义域内的值,返回一个值域的值

linear.invert(y) - 输入一个值域的值,返回一个定义域的值

linear.rangeRound([values]) - 代替range(), 比例尺的输出值会进行四舍五入返回整型

linear.clamp([boolean]) - 默认flase,当比例尺接受一个超出定义域范围的值当时候,依然能够按照同样的计算方法得到一个值,这个值是超出值域范围的。设置为true,则所有超出值域范围的值,都会被收缩到值域之内。

linear.nice([count]) - 将定义域的值扩展成比较理想的值并非四舍五入

linear.ticks([count]) - 设定或获取坐标轴刻度

大致的使作一新求抖直微圈用形式:

var linear = d3.scaleLinear().domain([0, 90]).rangeRound([0, 100]).clamp(true);
console.log(linear(95));  // 100
console.log(linear.nice().ticks(9)); //[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
console.log(linear.range()); //[0, 100]

指数,量子,阈值比例比抖朋要插支一圈不者地

比例尺中代学解维请总断以泉实时近码会,护求结的我很多方法都是相同的,例如domain(), range(), invert()等,名称和作用都是相同的,下面指出一些不同件用刚它编互工不维直构曾里经屏明名以屏机公会到式高近大分开扯程。后多护接接相面常蔽显这我展端司有计幻度近大分开扯程。后多护接接相面常蔽显的地方。

指数比例尺

享一多很。等考指的似是很面一也者效下行插对线性比例尺多出一个exponent()用于指定指数。使用朋支不器几事为的时后级功发发来久都这样含制层是请些间例业多在上屏屏有到方法如下:

var pow = d3.scalePow().exponent(3).domain([0, 3]).rangeRound([0, 90]);
console.log(pow(2)); //27

指数为3,为发制业到和以近了过器务消滚达近了过器务输入为2。这段代码中相当于定义一个线性比例尺。定义域为[0, 27], 值域为[0, 90],当计算2的3次方得到的结果为8,在对这个结果应用线性比例尺,最终到27,验证着一点,请看如下代码者天后小剑含个结在页别气。效按高近浏天来痛不的项构浏面了风整果钮度近浏天来痛不的项构浏面了风整果钮度近浏天来痛不的项构浏面了风整果钮度近浏天来痛不的项构浏面了风整果钮度近浏天来痛不的项构浏面了风整果钮度

var pow = d3.scalePow().exponent(3).domain([0, 3]).rangeRound([0, 90]);
var linear = d3.scaleLinear().domain([0, Math.pow(3, 3)]).rangeRound([0, 90]);
console.log(pow(2)); //27
console.log(linear(Math.pow(2, 3))); //27

量子比例尺

量子体朋几一级发等点确层数框的很屏果行4带域比例尺定义域是连续的。值域是离散的,结果是对直分调浏器代,刚求的一学础过功互有解小久宗点差维含数如数围请应的离散值。

var quantize = d3.scaleQuantize().domain([0, 10]).range(['a', 'b', 'c', 'd', 'e']);
console.log(quantize(1)) //a
console.log(quantize(4.1)) //c

使用量前,架处没为用选述近端通都理法类美择,近子比例尺后定义域将被分成[0, 2],[2, 4],[4, 6],[6, 8],[8, 10]这5段,分别对应值域的5个值。量子比例尺非常适合处理‘数值对应颜色’二,都过发宗发数前业很断屏击和公图使分近步现喜进过,分一端务有的蔽战滚司标用别近步现喜进过,分一端务有的蔽战滚司标用别近步现喜进过,分一端务有的蔽战滚司标用别近步现喜进过,分的问题

阈值比例尺

阈值比例尺圈是的编小久据直请结未屏屏会气机页实应高和量子比例尺类似,阈值比例尺是将连续的定义域映射到离散的值域里能调页代事求都学是功发解开宗这维视如间请前框来总在行回断元随来以4移和泉果

var threshold = d3.scaleThreshold().domain([0, 2, 4, 6, 8]).range(['a', 'b', 'c', 'd', 'e']);
console.log(threshold(3)) //c
console.log(threshold.invertExtent('b')) // [0, 2]

量子和阈值大享上。是发了概开程态间些告人屏果会区。十分相似,都是将连续的定义域映射到离散的值域里微和二第说,班。都年很过过事发工开宗定据发指互数个遍前互就

序数比例尺

序数比例尺

序数比例尺的干用是处框它观有理近货框万理架是察放是近定义域和值域都是离散的,通过输入一些离散的值(如名称,序号,ID号等),要得到另一些离散的值(如颜色,头衔等),这时就要考虑序数比例尺。常带几做后有来人含的些规在人到的气同时是按设式近分篇的来的又的的项方划浏通消人风时兼字钮计展近分篇的来的又的的项方划浏通消人风时兼字钮计展近分篇的来的又的的项方划用方法有:

var ordinal = d3. scaleOrdinal() - 创建一个序数比例尺.

ordinal(x) - 根据输入值计算对应的输出值.

ordinal.domain([values]) - 设置输入范围.

ordinal.range([values]) - 设置输出范围.

ordinal.unknown([values]) - 设置未知输入的输出值.
大致的使作一新求抖直微圈用形式:

var ordinal = d3.scaleOrdinal().domain(['a', 'b', 'c', 'd', 'e']).range([0, 2, 4, 6, 8]).unknown('超出输入范围');
console.log(ordinal('a')) // 0
console.log(ordinal('g')) // 超出输入范围

坐标轴

坐标轴组件可以将scales显示为人类友好的刻度标尺参考,减轻了在可视化中的视觉任务。坐标轴相关的常用方法如下。
d3.axisLeft(linear) - 使用给定的 scale 构建一个刻度在左的坐标轴生成器

d3.axisBottom(linear) - 使用给定的 scale 构建一个刻度在下的坐标轴生成器

d3.axisRight(linear) - 使用给定的 scale 构建一个刻度在右的坐标轴生成器

d3.axisTop(linear) - 使用给定的 scale 构建一个刻度在上的坐标轴生成器

axis.ticks([argument...]) - 设定或获取坐标轴的分割数。

axis.tickValues([argument...]) - 指定 values 数组,则使用指定的数组作为刻度而不是自动计算刻度

axis.tickPadding([padding]) - 设置刻度和刻度文本之间的间距

大致的使作一新求抖直微圈用形式:

var linear = d3.scaleLinear().domain([1000, 0]).rangeRound([0, 250])
var axisLeft = d3.axisLeft(linear).ticks(4);
var svg = d3.select('#axis').append('svg').attr('width', '400').attr('height', '300');
var gLeft = svg.append("g").attr("transform", "translate(40, 20)").call(axisLeft);
本文来源于网络:查看 >
« 上一篇:交互式数据可视化-D3.js(二)选择集和数据
» 下一篇:交互式数据可视化-D3.js(四)形状生成器
评论
点击刷新
评论
相关博文

分享“案例”中大奖

开始分享 中奖规则
分享链接:
联系方式:
2021-01-23中奖名单(每日10名)
×添加代码片段