- 1. echarts与react开发要点
- 2. Component
- 2.2. dataZoom数据缩放
- 2.3. legend 图例
- 2.4. grid 网格
- 2.5. visualMap
- 2.6. axisPointer
echarts是百度开发的一款使用 JavaScript 实现的开源可视化库。
echarts与react开发要点
echarts 不是react组件,因此组件的生命周期概念不适用于echarts组件。如何处理echarts部分?
在获取历史曲线的时候,根据模型id获取历史曲线数据。这里可能存在两次setState(id & 曲线数据)。这种处理方式不对:应该根据id去获取历史曲线数据之后,再统一
setState
,以免引发render
的两次调用。实际上,这种调用在render中很容易出问题,因为render可能没有考虑到id
和曲线数据是异步的(它认为有id就必有历史曲线,可是实际上setState(id)
之后进入render时是没有曲线数据的)。在获取“历史曲线”这一步时,需要一些辅助函数来实现获取曲线数据这一步。
- state中应该存储两部分状态
- 渲染组件用到的数据
- UI展示时的判断依据
React复用组件如何实现“历史曲线展示”
频繁调用的组件会不断
update
, 因此需要重写shouldComponentUpdate
函数来控制这方面。一个组件会在两种情况下进入shouldUpdate
函数:1)自身state发生改变和2)props
发生改变。因此,shouldComponentUpdate
函数可以判断这两方面的特定属性是否发生改变,来决定是否重新render页面。react应用组件的一般思路:
Component
tooltip
提示框组件。
提示框组件的通用介绍:
提示框组件可以设置在多种地方:
- 可以设置在全局,即 tooltip
- 可以设置在坐标系中,即 grid.tooltip、polar.tooltip、single.tooltip
- 可以设置在系列中,即 series.tooltip
- 可以设置在系列的每个数据项中,即 series.data.tooltip
tooltip. trigger = ‘item’
触发类型。
可选:
'item'
数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用。
'axis'
坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用。
在 ECharts 2.x 中只支持类目轴上使用 axis trigger,在 ECharts 3 中支持在直角坐标系和极坐标系上的所有类型的轴。并且可以通过 axisPointer.axis 指定坐标轴。
'none'
什么都不触发。
dataZoom数据缩放
dataZoom
组件 用于区域缩放,从而能自由关注细节的数据信息,或者概览数据整体,或者去除离群点的影响。
现在支持这几种类型的 dataZoom
组件:
- 内置型数据区域缩放组件(dataZoomInside):内置于坐标系中,使用户可以在坐标系上通过鼠标拖拽、鼠标滚轮、手指滑动(触屏上)来缩放或漫游坐标系。
- 滑动条型数据区域缩放组件(dataZoomSlider):有单独的滑动条,用户在滑动条上进行缩放或漫游。
- 框选型数据区域缩放组件(dataZoomSelect):提供一个选框进行数据区域缩放。即 toolbox.feature.dataZoom,配置项在
toolbox
中。
✦ dataZoom 和 数轴的关系 ✦
dataZoom
主要是对 数轴(axis)
进行操作(控制数轴的显示范围,或称窗口(window))。
可以通过 dataZoom.xAxisIndex 或 dataZoom.yAxisIndex 或 dataZoom.radiusAxisIndex 或 dataZoom.angleAxisIndex 来指定
dataZoom
控制哪个或哪些数轴。
dataZoom
组件可 同时存在多个,起到共同控制的作用。如果多个 dataZoom
组件共同控制同一个数轴,他们会自动联动。
✦ dataZoom 组件如何影响轴和数据 ✦
dataZoom
的运行原理是通过 数据过滤
以及在内部设置轴的显示窗口来达到 数据窗口缩放
的效果。
数据过滤模式(dataZoom.filterMode)的设置不同,效果也不同。
可选值为:
- ‘filter’:当前数据窗口外的数据,被 过滤掉。即 会 影响其他轴的数据范围。每个数据项,只要有一个维度在数据窗口外,整个数据项就会被过滤掉。
- ‘weakFilter’:当前数据窗口外的数据,被 过滤掉。即 会 影响其他轴的数据范围。每个数据项,只有当全部维度都在数据窗口同侧外部,整个数据项才会被过滤掉。
- ‘empty’:当前数据窗口外的数据,被 设置为空。即 不会 影响其他轴的数据范围。
- ‘none’: 不过滤数据,只改变数轴范围。
如何设置,由用户根据场景和需求自己决定。经验来说:
- 当『只有 X 轴 或 只有 Y 轴受
dataZoom
组件控制』时,常使用filterMode: 'filter'
,这样能使另一个轴自适应过滤后的数值范围。 - 当『X 轴 Y 轴分别受
dataZoom
组件控制』时:- 如果 X 轴和 Y 轴是『同等地位的、不应互相影响的』,比如在『双数值轴散点图』中,那么两个轴可都设为
fiterMode: 'empty'
。 - 如果 X 轴为主,Y 轴为辅,比如在『柱状图』中,需要『拖动
dataZoomX
改变 X 轴过滤柱子时,Y 轴的范围也自适应剩余柱子的高度』,『拖动dataZoomY
改变 Y 轴过滤柱子时,X 轴范围不受影响』,那么就 X轴设为fiterMode: 'filter'
,Y 轴设为fiterMode: 'empty'
,即主轴'filter'
,辅轴'empty'
。
- 如果 X 轴和 Y 轴是『同等地位的、不应互相影响的』,比如在『双数值轴散点图』中,那么两个轴可都设为
✦ 数据窗口的设置 ✦
dataZoom
的数据窗口范围的设置,目前支持两种形式:
- 百分比形式:即设置 dataZoom.start 和 dataZoom.end。
- 绝对数值形式:即设置 dataZoom.startValue 和 dataZoom.endValue。
注意:当使用百分比形式指定 dataZoom
范围时,且处于如下场景(或类似场景)中,dataZoom
的结果是和 dataZoom
组件的定义顺序相关的。
1 | option = { |
在上例中,dataZoomY
的 start: 20, end: 80
到底表示什么意思?
如果
yAxis.min
、yAxis.max
进行了直接设置:那么
dataZoomY
的start: 20, end: 80
表示yAxis.min
~yAxis.max
的20%
到80%
。如果
yAxis.min
、yAxis.max
没有设置:如果
dataZoomX
设置为filterMode: 'empty'
:那么
dataZoomY
的start: 20, end: 80
表示 series.data 中dataMinY
~dataMaxY
(即上例中的9
~80
)的20%
到80%
。如果
dataZoomX
设置为filterMode: 'filter'
:那么,因为
dataZoomX
定义dataZoomY
组件之前,所以dataZoomX
的start: 30, end: 70
表示全部数据的30%
到70%
,而dataZoomY
组件的start: 20, end: 80
表示经过dataZoomX
过滤处理后,所得数据集的20%
到80%
。如果需要改变这种处理顺序,那么改变
dataZoomX
和dataZoomY
在 option 中的出现顺序即可。
legend 图例
图例组件。
图例组件展现了不同系列的标记(symbol),颜色和名字。可以通过点击图例控制哪些系列不显示。
ECharts 3 中单个 echarts 实例中可以存在多个图例组件,会方便多个图例的布局。
当图例数量过多时,可以使用 滚动图例(垂直) 或 滚动图例(水平),参见:legend.type
1 | legend.data = [ |
legend.data
图例的数据数组。数组项通常为一个字符串,每一项代表一个系列的 name
(如果是饼图,也可以是饼图单个数据的 name
)。图例组件会自动根据对应系列的图形标记(symbol)来绘制自己的颜色和标记,特殊字符串 ''
(空字符串)或者 '\n'
(换行字符串)用于图例的换行。
如果 data
没有被指定,会自动从当前系列中获取。多数系列会取自 series.name 或者 series.encode 的 seriesName
所指定的维度。如 饼图 and 漏斗图 等会取自 series.data 中的 name。
如果要设置单独一项的样式,也可以把该项写成配置项对象。此时必须使用 name
属性对应表示系列的 name
。
grid 网格
直角坐标系内绘图网格,单个 grid 内最多可以放置上下两个 X 轴,左右两个 Y 轴。可以在网格内绘制折线图,柱状图,散点图(气泡图)。
在 ECharts 2.x 里单个 echarts 实例中最多只能存在一个 grid 组件,在 ECharts 3 中可以存在任意个 grid 组件。
1 | option = { |
containLabel
: grid 区域是否包含坐标轴的刻度标签。
containLabel 为
false
的时候:grid.left
grid.right
grid.top
grid.bottom
grid.width
grid.height
决定的是由坐标轴形成的矩形的尺寸和位置。- 这比较适用于多个
grid
进行对齐的场景,因为往往多个grid
对齐的时候,是依据坐标轴来对齐的。
containLabel 为
true
的时候:grid.left
grid.right
grid.top
grid.bottom
grid.width
grid.height
决定的是包括了坐标轴标签在内的所有内容所形成的矩形的位置。- 这常用于『防止标签溢出』的场景,标签溢出指的是,标签长度动态变化时,可能会溢出容器或者覆盖其他组件。
visualMap
visualMap
是视觉映射组件,用于进行『视觉编码』,也就是将数据映射到视觉元素(视觉通道)。
视觉元素可以是:
symbol
: 图元的图形类别。symbolSize
: 图元的大小。color
: 图元的颜色。colorAlpha
: 图元的颜色的透明度。opacity
: 图元以及其附属物(如文字标签)的透明度。colorLightness
: 颜色的明暗度,参见 HSL。colorSaturation
: 颜色的饱和度,参见 HSL。colorHue
: 颜色的色调,参见 HSL。
visualMap
组件可以定义多个,从而可以同时对数据中的多个维度进行视觉映射。
visualMap
组件可以定义为 分段型(visualMapPiecewise) 或 连续型(visualMapContinuous),通过 type
来区分。例如:
1 | option = { |
✦ 视觉映射方式的配置 ✦
既然是『数据』到『视觉元素』的映射,visualMap
中可以指定数据的『哪个维度』(参见visualMap.dimension)映射到哪些『视觉元素』(参见visualMap.inRange 和 visualMap.outOfRange)中。
在 visualMap 组件所控制的 series 中,如果 series 中某个数据项需要避开 visualMap 映射,可以这么配置:
1 | series: { |
✦ 与 ECharts2 中 dataRange 的关系 ✦
visualMap
是由 ECharts2 中的 dataRange
组件改名以及扩展而来。ECharts3里 option
中的 dataRange
配置项仍然被兼容,会自动转换成 visualMap
配置项。在option中推荐写 visualMap
而非 dataRange
。
inRange
定义 在选中范围中 的视觉元素。(用户可以和 visualMap 组件交互,用鼠标或触摸选择范围)
可选的视觉元素有:
symbol
: 图元的图形类别。symbolSize
: 图元的大小。color
: 图元的颜色。colorAlpha
: 图元的颜色的透明度。opacity
: 图元以及其附属物(如文字标签)的透明度。colorLightness
: 颜色的明暗度,参见 HSL。colorSaturation
: 颜色的饱和度,参见 HSL。colorHue
: 颜色的色调,参见 HSL。
inRange
能定义目标系列(参见 visualMap-continuous.seriesIndex)视觉形式,也同时定义了 visualMap-continuous
本身的视觉样式。通俗来讲就是,假如 visualMap-continuous
控制的是散点图,那么 inRange
同时定义了散点图的 颜色
、尺寸
等,也定义了 visualMap-continuous
本身的 颜色
、尺寸
等。这二者能对应上。
定义方式,例如:
1 | visualMap: [ |
如果想分别定义 visualMap-continuous
本身的视觉样式和 目标系列
的视觉样式,则这样定义:
1 | visualMap: [ |
或者这样定义:
1 | visualMap: [ |
✦ 关于视觉通道 ✦
- inRange 中,可以有任意几个的『视觉通道』定义(如
color
、symbolSize
等)。这些视觉通道,会被同时采用。 - 一般来说,建议使用
透明度(opacity)
,而非颜色透明度(colorAlpha)
(他们细微的差异在于,前者能也同时控制图元中的附属物(如 label)的透明度,而后者只能控制图元本身颜色的透明度)。 - 视觉映射的方式:支持两种方式:线性映射、查表映射。
✦ 视觉通道 — 线性映射 ✦
线性映射
表示 series.data 中的每一个值(dataValue)会经过线性映射计算,从 [visualMap.min, visualMap.max]
映射到设定的 [visual value 1, visual value 2]
区间中的某一个视觉的值(下称 visual value)。
例如,我们设置了 [visualMap.min, visualMap.max] 为 [0, 100]
,并且我们有 series.data: [50, 10, 100]
。我们想将其映射到范围为 [0.4, 1]
的 opacity
上,从而达到用透明度表达数值大小的目的。那么 visualMap 组件会对 series.data 中的每一个 dataValue 做线性映射计算,得到一个 opacityValue。最终得到的 opacityValues 为 [0.7, 0.44, 1]
。
visual 范围也可以反向,例如上例,可以设定 opacity
范围为 [1, 0.4]
,则上例得到的 opacityValues 为 [0.7, 0.96, 0.4]
。
注意,[visualMap.min, visualMap.max] 须手动设置,不设置则默认取 [0, 100],而非 series.data 中的 dataMin
和 dataMax
。
如何设定为线性映射?以下情况时,会设定为 线性映射
:
- 当
visualMap
为 visualMap-continuous 时,或者 - 当
visualMap
为 visualMap-piecewise 且 未设置 visualMap-piecewise.categories 时。
视觉通道的值(visual value):
- 视觉通道的值一般都以
Array
形式表示,例如:color: ['#333', '#777']
。 - 如果写成
number
或string
,会转成Array
。例如,写成opacity: 0.4
会转成opacity: [0.4, 0.4]
,color: '#333'
会转成color: ['#333', '#333']
。 - 对于
图形大小(symbolSize)
、透明度(opacity)
、颜色透明度(colorAlpha)
、颜色明暗度(colorLightness)
、颜色饱和度(colorSaturation)
、色调(colorHue)
:形如Array
的视觉范围总是表示:[最小数据值对应的视觉值, 最大数据值对应的视觉值]
。比如:colorLightness: [0.8, 0.2]
,表示 series.data 中,和visualMap.min
相等的值(如果有的话)映射到颜色明暗
的0.8
,和visualMap.max
相等的值(如果有的话)映射到颜色明暗
的0.2
,中间其他数据值,按照线性计算出映射结果。 - 对于
颜色(color)
,使用数组表示例如:['#333', '#78ab23', 'blue']
。意思就是以这三个点作为基准,形成一种『渐变』的色带,数据映射到这个色带上。也就是说,与visualMap.min
相等的值会映射到'#333'
,与visualMap.max
相等的值会映射到'blue'
。对于visualMap.min
和visualMap.max
中间的其他点,以所给定的'#333'
,'#78ab23'
,'blue'
这三个颜色作为基准点进行分段线性插值,得到映射结果。 - 对于
图形类别(symbol)
:使用数据表示例如:['circle', 'rect', 'diamond']
。与visualMap.min
相等的值会映射到'circle'
,与visualMap.max
相等的值会映射到'diamond'
。对于 中间的其他点,会根据他们和visualMap.min
和visualMap.max
的数值距离,映射到'circle'
,'rect'
,'diamond'
中某个值上。
visual value 的取值范围:
透明度(opacity)
、颜色透明度(colorAlpha)
、颜色明暗度(colorLightness)
、颜色饱和度(colorSaturation)
、visual value
取值范围是
[0, 1]
。色调(colorHue)
:取值范围是
[0, 360]
。颜色(color)
:颜色可以使用 RGB 表示,比如
'rgb(128, 128, 128)'
,如果想要加上 alpha 通道,可以使用 RGBA,比如'rgba(128, 128, 128, 0.5)'
,也可以使用十六进制格式,比如 ‘#ccc’。图形类别(symbol)
:
ECharts 提供的标记类型包括
1 | 'circle'`, `'rect'`, `'roundRect'`, `'triangle'`, `'diamond'`, `'pin'`, `'arrow'`, `'none' |
可以通过 'image://url'
设置为图片,其中 URL 为图片的链接,或者 dataURI
。
URL 为图片链接例如:
1 | 'image://http://xxx.xxx.xxx/a/b.png' |
URL 为 dataURI
例如:
1 | 'image://data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7' |
可以通过 'path://'
将图标设置为任意的矢量路径。这种方式相比于使用图片的方式,不用担心因为缩放而产生锯齿或模糊,而且可以设置为任意颜色。路径图形会自适应调整为合适的大小。路径的格式参见 SVG PathData。可以从 Adobe Illustrator 等工具编辑导出。
例如:
1 | 'path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z' |
✦ 视觉通道 — 查表映射 ✦
查表映射
表示 series.data 中的所有值(dataValue)是可枚举的,会根据给定的映射表查表得到映射结果。
例如,在 visualMap-piecewise 中,我们设定了 visualMap-piecewise.categories 为 ['Demon Hunter', 'Blademaster', 'Death Knight', 'Warden', 'Paladin']
。我们有 series.data: ['Demon Hunter', 'Death Knight', 'Warden', 'Paladin']
。然后我们可以定立查表映射规则:color: {'Warden': 'red', 'Demon Hunter': 'black'}
,于是 visualMap
组件会按照表来将 dataValue
映射到 color
。
如何设定为查表映射?当 visualMap
为 visualMap-piecewise 且 设置了 visualMap-piecewise.categories 时,会进行查表映射。
视觉通道的值(visual value):一般使用 Object
或 Array
来表示,例如:
1 | visualMap: { |
✦ 修改视觉编码 ✦
如果在图表被渲染后(即已经使用 setOption
设置了初始 option
之后),想修改 visualMap 的各种 视觉编码
,按照惯例,再次使用 setOption
即可。例如:
1 | chart.setOption({ |
但请注意:
- visualMap option 中的这几个属性,
inRange
,outOfRange
,target
,controller
,在 setOption 时不支持 merge。否则会带来过于复杂的 merge 逻辑。也就是说,setOption
时,一旦修改了以上几个属性中的一项,其他项也会被清空,而非保留当前状态。所以,设置 visual 值时,请一次性全部设置,而非只设置一部分。 - 不推荐使用
getOption -> 修改option -> setOption
的方式:
1 | // 不推荐这样做(尽管也能达到和上面的例子相同的结果): |
注意,inRange 没有指定,则会默认会设置 color: ['#f6efa6', '#d88273', '#bf444c']
,如果你不想要这个color,可以 inRange: {color: null}
来去除。
axisPointer
这是坐标轴指示器(axisPointer)的全局公用设置。
坐标轴指示器是指示坐标轴当前刻度的工具。
1 | xAxis: { |
如何显示 axisPointer:
直角坐标系 grid、极坐标系 polar、单轴坐标系 single 中的每个轴都自己的 axisPointer。
他们的 axisPointer 默认不显示。有两种方法可以让他们显示:
- 设置轴上的
axisPointer.show
(例如 xAxis.axisPointer.show)为true
,则显示此轴的 axisPointer。 - 设置 tooltip.trigger 设置为
'axis'
或者 tooltip.axisPointer.type 设置为'cross'
,则此时坐标系会自动选择显示哪个轴的 axisPointer,也可以使用 tooltip.axisPointer.axis 改变这种选择。注意,轴上如果设置了 axisPointer,会覆盖此设置。
如何显示 axisPointer 的 label:
axisPointer 的 label 默认不显示(也就是默认只显示指示线),除非:
- 设置轴上的
axisPointer.label.show
(例如 xAxis.axisPointer.label.show)为true
,则显示此轴的 axisPointer 的 label。 - 设置 tooltip.axisPointer.type 为
'cross'
时会自动显示 axisPointer 的 label。
关于触屏的 axisPointer 的设置
设置轴上的 axisPointer.handle.show
(例如 xAxis.axisPointer.handle.show 为 true
则会显示出此 axisPointer 的拖拽按钮。(polar 坐标系暂不支持此功能)。
注意: 如果发现此时 tooltip 效果不良好,可设置 tooltip.triggerOn 为 'none'
(于是效果为:手指按住按钮则显示 tooltip,松开按钮则隐藏 tooltip),或者 tooltip.alwaysShowContent 为 true
(效果为 tooltip 一直显示)。
参见例子。
自动吸附到数据(snap)
对于数值轴、时间轴,如果开启了 snap,则 axisPointer 会自动吸附到最近的点上。
1 | { |
https://go.neo4j.com/rs/710-RRC-335/images/Neo4j_Graph_Algorithms.pdf
绘图举例
- [x]
echarts
自定义X/Y轴区间
- [x] echarts隐藏坐标轴轴线、刻度(axisTick)、标签
- [x] echarts如何展示无数据情况
- [ ] echarts柱状图与中国地图联动
- [ ] echarts geo背景响应
- [ ] echarts 地图区域处理时间
- [ ] echarts xAxis 配置/坐标轴
- [ ] echarts
radialGradient/linearGradient
- [ ] 绘制折现图
echarts
自定义X/Y轴区间
1 | option = { |
echarts隐藏坐标轴轴线、刻度(axisTick)、标签
1 | options = { |
echarts如何展示无数据情况
1 | option = { |
绘制折线图
1 | option = { |
timePicker怎么和历史曲线重合?
1 | position: absolute, |
series data怎么准备以保证有足够的数据做tooltip
dataZoom在无数据时隐藏
1 | option = { |
1 |
地图
地图主要用于地理区域数据的可视化,配合 visualMap 组件用于展示不同区域的人口分布密度等数据。
多个地图类型相同的系列会在同一地图上显示,这时候使用第一个系列的配置项作为地图绘制的配置。
1 | // 地图注册之后才能使用 |
1 | option = { |
- geo组件和geoIndex关系
geo组件可能有多个,可以通过geoIndex(索引,即下标)的方式进行指定。
- series.scatter如何展示到地理坐标系上面?
1 | { |
- geo组件与series.map的关系
series.map
指定map可以展示data,实现地图区域可视化,配合visualMap组件用于展示不同区域的人口分布、密度数据。对于地理坐标系上面的点、线数据可视化,使用基于geo组件的散点图和线图。
多个地图类型series-map.map相同的系列图,会在同一个地图上显示,使用第一个系列图的地图设置。
- geo组件和series.map的关系
series-map既可以直接指定地图类型map: 'china'
,也可以使用geo地理坐标系组件。(通过geoIndex指定坐标系)
当地图不需要和其他系列图共享坐标系时,两者都是ok的。但是当需要和其他系列图共享坐标系时(比如在地理坐标系上面的散点图),使用基于geo组件的方式更为简单。
同时,geo组件无tooltip功能(类似于只提供一个展示白板),它内部需要指定地图类型map: 'china'
,以提供用到的坐标系。
折线图(line)
基本折线图、平滑图
1 | option = { |
面积图
1 | option = { |
折线图堆叠
数据堆叠,同个类目轴上系列配置相同的stack值后,后一个系列的值会在前一个系列的值上相加。
1 | option = { |
堆叠面积图
和堆叠图相比,多了areaStyle: {}
1 | option = { |
渐变堆叠面积图
修改了areaStyle: {}
里面的内容
1 | option = { |
未来一周气温变化
1 | option = { |
折线区域高亮
1 | option = { |
数据过滤
1 | $.get(ROOT_PATH + '/data/asset/data/life-expectancy-table.json', function (_rawData) { |
折线图渐变
1 | var data = [["2000-06-05",116],["2000-06-06",129],["2000-06-07",135],["2000-06-08",86],["2000-06-09",73],["2000-06-10",85],["2000-06-11",73],["2000-06-12",68],["2000-06-13",92],["2000-06-14",130],["2000-06-15",245],["2000-06-16",139],["2000-06-17",115],["2000-06-18",111],["2000-06-19",309],["2000-06-20",206],["2000-06-21",137],["2000-06-22",128],["2000-06-23",85],["2000-06-24",94],["2000-06-25",71],["2000-06-26",106],["2000-06-27",84],["2000-06-28",93],["2000-06-29",85],["2000-06-30",73],["2000-07-01",83],["2000-07-02",125],["2000-07-03",107],["2000-07-04",82],["2000-07-05",44],["2000-07-06",72],["2000-07-07",106],["2000-07-08",107],["2000-07-09",66],["2000-07-10",91],["2000-07-11",92],["2000-07-12",113],["2000-07-13",107],["2000-07-14",131],["2000-07-15",111],["2000-07-16",64],["2000-07-17",69],["2000-07-18",88],["2000-07-19",77],["2000-07-20",83],["2000-07-21",111],["2000-07-22",57],["2000-07-23",55],["2000-07-24",60]]; |
一天用电量分布
1 | option = { |
多X轴
1 | var colors = ['#5470C6', '#EE6666']; |
联动和共享数据集
1 | setTimeout(function () { |
1 | option = { |
1 | option = { |
1 | option = { |