摘要:设置为,则所有超出值域范围的值,都会被收缩到值域之内。指数比例尺相对线性比例尺多出一个用于指定指数。这段代码中相当于定义一个线性比例尺。使用量子比例尺后定义域将被分成这段,分别对应值域的个值。
线性比例尺
线性比例尺是常用比例尺常用方法有:
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量子比例尺
量子比例尺定义域是连续的。值域是离散的,结果是对应的离散值。
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个值。量子比例尺非常适合处理‘数值对应颜色’的问题
阈值比例尺阈值比例尺和量子比例尺类似,阈值比例尺是将连续的定义域映射到离散的值域里。
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);
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/53195.html
摘要:设置为,则所有超出值域范围的值,都会被收缩到值域之内。指数比例尺相对线性比例尺多出一个用于指定指数。这段代码中相当于定义一个线性比例尺。使用量子比例尺后定义域将被分成这段,分别对应值域的个值。 线性比例尺 线性比例尺是常用比例尺常用方法有: var linear = d3.scaleLinear() - 创建一个定量的线性比例尺. linear.domain([numbers]) - ...
摘要:该事件不会区分字母的大小写,例如和被视为一致。这些布局的作用都是将某种数据转换成另一种数据,而转换后的数据是利于可视化的。而有元素与数据对应的部分称为。 1.安装
摘要:如其中,和表示绘制区域的宽高,表示版本号。下面分别是绘制一个多边形和折线路径标签功能最丰富,以上图形都可以使用路径制作出来,用法与折线类似给出一个坐标点在坐标前添加一个英文字母,表示如何运动到此坐标点点。英文字符按照功能分为五类。 在D3中会穿插SVG 方便大家对D3对使用 SVG简介 可缩放矢量图(scalabel vector graphics),是用于描述二维矢量图形的一种图形格...
摘要:数据可视化库超过的的可能是最流行和最广泛的数据可视化库。是一组组件,用于高效地渲染大型列表和表格数据。一种优雅而灵活的方式,可以利用组件来支持实际的数据可视化。 想阅读更多优质文章请猛戳GitHub博客,一年百来篇优质文章等着你! React Native 组件库 1. NativeBase showImg(https://segmentfault.com/img/bVbrLHH?w=...
阅读 2177·2021-11-22 13:52
阅读 3794·2021-11-10 11:36
阅读 1311·2021-09-24 09:47
阅读 999·2019-08-29 13:54
阅读 3340·2019-08-29 13:46
阅读 1922·2019-08-29 12:16
阅读 2087·2019-08-26 13:26
阅读 3456·2019-08-23 17:10