您的位置 首页 > 德语词汇

scale是什么意思?用法、例句 Day7 G2Scale度量详解

今天给各位分享scale是什么意思?用法、例句的知识,其中也会对Day7 G2/Scale度量详解进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

前面也说过,度量Scale是数据空间到图形空间的转换桥梁,负责原始数据到[0,1]区间数值的相互转换工作,也叫归一化。不清楚为什么要做归一化操作的同学可以看options属性这篇文章。那scale又是如何实现这个归一化操作的呢?这个得从原始数据类型开始讲起。

scale是什么意思?用法、例句 Day7 G2Scale度量详解

在G2中,我们按照数据是否连续将数据划分为以下几类:

[\n{month:'一月',temperature:7,city:'tokyo'},\n{month:'二月',temperature:6.9,city:'newYork'},\n{month:'三月',temperature:9.5,city:'tokyo'},\n{month:'四月',temperature:14.5,city:'tokyo'},\n{month:'五月',temperature:18.2,city:'berlin'}\n]\n

其中:month代表月份,temperature代表温度,city代表城市。

因为原始数据具有许多不同类型,因此scale也需要对应的类型去处理原始数据,下面就介绍一下scale的类型及其用法。

连续数据度量类型和timeCat在显示时会默认对数据进行排序。

知道了scale的类型,那究竟不同类型的scale是怎么将不同的数据进行归一化的呢?

首先说一下归一化操作主要做的三件事:

当原始数据类型为连续数据时,scale类型选择连续类型里的一种,

constdata=[\n{name:1,value:5},\n{name:2,value:10},\n{name:2,value:15}\n];\nscale配置:

默认配置机制

constdata=[\n{name:1,value:5},\n{name:2,value:10},\n{name:3,value:15}\n\n//{name:"1",value:5},\n//{name:"2",value:10},\n//{name:"3",value:15}\n];\nconstchart=newG2.Chart({\ncontainer:"root",\nwidth:400,\nheight:400,\n});\nchart.source(data);\nchart.interval().position("name*value");\nchart.render();\n

data中name字段为数字

总上图可以看出:当name为数字时,度量类型默认采用linear;当name为字符串时,因为不是时间格式,所以默认为cat

不同类型的配置参数可能会有所差别,但是也有以下共同属性:

{\ntype:{string},//度量的类型\nrange:{array},//数值范围区间,即度量转换的范围,默认为[0,1]\nalias:{string},//为数据属性定义别名,用于图例、坐标轴、tooltip的个性化显示\nticks:{array},//存储坐标轴上的刻度点文本信息\ntickCount:{number},//坐标轴上刻度点的个数,不同的度量类型对应不同的默认值\nformatter:{function},//回调函数,用于格式化坐标轴刻度点的文本显示,会影响数据在坐标轴、图例、tooltip上的显示\n}\n

下面针对每种类型scale的用法进行说明:

连续数据类型的基类,除了以上共有属性,还包括以下特殊属性:

linear和cat的区别

constdata=[\n{name:"3",value:5},\n{name:"4",value:10},\n{name:"5",value:15}\n];\nconstchart=newG2.Chart({\ncontainer:"root",\nwidth:400,\nheight:400,\noptions:{\nscales:{\nname:{\ntype:"linear"\n//type:"cat"\n}\n}\n}\n});\nchart.source(data);\nchart.interval().position("name*value");\nchart.render();\n

type为linear

当type为linear时,因为min和max及tickCount都没有设置,所以min默认取数据中的最小值3,max默认取数据中的最大值5,又因为tickCount默认分成5个坐标点,所以tickInterval被设置成了0.5,但是这样的图表显然不是我们想要的,所以我们可以通过设置min和max让图表的位置更加合理。

当type为cat时,为什么图表的位置就正常了呢?

因为当type为cat时,scale的转换方式就变了,它会将3,4,5分成3类,每一类的所占比例都是均分的,这是和linear时的scale转换最大的不同,linear是按照数值大小来取比例的,并不是均分的,所以最后的图表才会出现这种差异化。

values属性说明

将linear实例代码中的scales改为:

name:{\ntype:"cat",\n//values:["5","4","1"]\n}\n

values设置之前

可以发现,当values设置之后,最后图表分类字段的显示顺序变成了数组中的分类字段排列顺序了。

注意:values中的值必须和数据中的字段一一对应,即不能采用数据中不存在的字段。

time类型的值是一种特殊的连续类型,是linear的子类,其特殊的属性:

time与linear的区别

因为用linear无法直接表示数据类型为时间的数据,所以增加了time度量类型来专门处理数据类型为时间的数据。

log类型度量可以将数据[2,4,8,16,32]转换成[1,2,3,4,5]再进行归一化处理,所以能将非常大范围的数据映射到一个均匀的范围内,这种度量是linear的子类,支持所有通用的属性和linear度量的属性,特有的属性:

linear和log的区别:

constdata=[\n{name:1,value:1},\n{name:2,value:2},\n{name:3,value:3},\n{name:4,value:4},\n{name:5,value:5},\n{name:6,value:6},\n{name:1024,value:15}\n];\nconstchart=newG2.Chart({\ncontainer:"root",\nwidth:400,\nheight:400,\noptions:{\nscales:{\nname:{\ntype:"log"\n//type:"linear"\n}\n}\n}\n});\nchart.source(data);\nchart.point().position("name*value");\nchart.render();\n

type为linear

由以上两图可以看出,当数据分布不均匀时,此处低值数值比较密集,如果用linea类型r,则低数值范围基本排为一列,看不出差异;但是如果用log类型,则低数值范围也能很好的展示。

pow类型的度量能将数据[1,2,3,4,5]转换成[2,4,8,16,32]然后进行归一化处理,它也是linear类型的一个子类,除了支持所有通用的属性和linear度量的属性外也有自己的属性:

linear和pow的区别:

timeCat类型的数据,是一种日期数据,但是不是连续的日期。例如代表存在股票交易的日期,此时如果使用time类型,那么节假日没有数据,折线图、k线图会断裂,所以此时使用timeCat的度量表示分类的日期,默认会对数据做排序。

timeCat、time、cat的区别

constdata=[\n{name:2,value:2,time:"1996-05-01"},\n{name:3,value:3,time:"1996-05-02"},\n{name:4,value:4,time:"1996-05-03"},\n{name:5,value:5,time:"1996-08-01"},\n{name:6,value:16,time:"1996-09-03"},\n{name:1024,value:15,time:"1996-08-02"}\n];\nconstchart=newG2.Chart({\ncontainer:"root",\nwidth:400,\nheight:400,\noptions:{\nscales:{\ntime:{\ntype:"timeCat"\n//type:"time"\n//type:"cat"\n}\n}\n}\n});\nchart.source(data);\nchart.interval().position("time*value");\nchart.render();\n

type为timeCat

从以上三幅图的对比中我们可以看出:

timeCat与cat的区别:timeCat会对分类的时间进行排序,而cat只是简单的分类,并不会对分类进行排序,

可以把timeCat理解成time和cat的子类,所以既有time对日期排序的特性,也有cat分类的特性。

timeCat与time的区别:timeCat是分类度量,对时间进行分类,然后再进行归一化出处理,而time是连续度量,会对时间直接进行归一化处理。

好了,文章到这里就结束啦,如果本次分享的scale是什么意思?用法、例句和Day7 G2/Scale度量详解问题对您有所帮助,还望关注下本站哦!

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023