课程表

Echarts 基础教程

Echarts 案例教程

工具箱
速查手册

Echarts 数据的视觉映射

当前位置:免费教程 » JS/JS库/框架 » Echarts

数据可视化是 数据 到 视觉元素 的映射过程(这个过程也可称为视觉编码,视觉元素也可称为视觉通道)。

ECharts 的每种图表本身就内置了这种映射过程,比如折线图把数据映射到『线』,柱状图把数据映射到『长度』。一些更复杂的图表,如 graph、事件河流图、treemap 也都会做出他们内置的映射。

此外,ECharts 还提供了 visualMap 组件 来提供通用的视觉映射。visualMap 组件中可以使用的视觉元素有:
图形类别(symbol)、图形大小(symbolSize)
颜色(color)、透明度(opacity)、颜色透明度(colorAlpha)、
颜色明暗度(colorLightness)、颜色饱和度(colorSaturation)、色调(colorHue)

下面对 visualMap 组件的使用方式进行简要的介绍。

数据和维度

ECharts中的数据,一般存放于 series.data 中。根据图表类型不同,数据的具体形式也可能有些许差异。比如可能是『线性表』、『树』、『图』等。但他们都有个共性:都是『数据项(dataItem)』的集合。每个数据项含有『数据值(value)』和其他信息(如果需要的话)。每个数据值,可以是单一的数值(一维)或者一个数组(多维)。

例如,series.data 最常见的形式,是『线性表』,即一个普通数组:

  1. series: {
  2.     data: [
  3.         {       // 这里每一个项就是数据项(dataItem)
  4.             value: 2323, // 这是数据项的数据值(value)
  5.             itemStyle: {...}
  6.         },
  7.         1212,   // 也可以直接是 dataItem 的 value,这更常见。
  8.         2323,   // 每个 value 都是『一维』的。
  9.         4343,
  10.         3434
  11.     ]}
  12. series: {
  13.     data: [
  14.         {                        // 这里每一个项就是数据项(dataItem)
  15.             value: [3434, 129,  '圣马力诺'], // 这是数据项的数据值(value)
  16.             itemStyle: {...}
  17.         },
  18.         [1212, 5454, '梵蒂冈'],   // 也可以直接是 dataItem 的 value,这更常见。
  19.         [2323, 3223, '瑙鲁'],     // 每个 value 都是『三维』的,每列是一个维度。
  20.         [4343, 23,   '图瓦卢']    // 假如是『气泡图』,常见第一维度映射到x轴,
  21.                                  // 第二维度映射到y轴,
  22.                                  // 第三维度映射到气泡半径(symbolSize)
  23.     ]}

在图表中,往往默认把 value 的前一两个维度进行映射,比如取第一个维度映射到x轴,取第二个维度映射到y轴。如果想要把更多的维度展现出来,可以借助 visualMap 。最常见的情况,气泡图(scatter) 使用半径展现了第三个维度。


visualMap 组件

visualMap 组件定义了把数据的『哪个维度』映射到『什么视觉元素上』。

现在提供如下两种类型的visualMap组件,通过 visualMap.type 来区分。

其定义结构例如:

  1. option = {
  2.     visualMap: [ // 可以同时定义多个 visualMap 组件。
  3.         { // 第一个 visualMap 组件
  4.             type: 'continuous', // 定义为连续型 visualMap
  5.             ...
  6.         },
  7.         { // 第二个 visualMap 组件
  8.             type: 'piecewise', // 定义为分段型 visualMap
  9.             ...
  10.         }
  11.     ],
  12.     ...};

在线运行实例

分段型视觉映射组件(visualMapPiecewise),有三种模式:

  • 连续型数据平均分段: 依据 visualMap-piecewise.splitNumber 来自动平均分割成若干块。

  • 连续型数据自定义分段: 依据 visualMap-piecewise.pieces 来定义每块范围。

  • 离散数据(类别性数据): 类别定义在 visualMap-piecewise.categories 中。

视觉映射方式的配置

既然是『数据』到『视觉元素』的映射,visualMap 中可以指定数据的『哪个维度』中。

例一:

  1. option = {
  2.     visualMap: [
  3.         {
  4.             type: 'piecewise'
  5.             min: 0,
  6.             max: 5000,
  7.             dimension: 3,       // series.data 的第四个维度(即 value[3])被映射
  8.             seriesIndex: 4,     // 对第四个系列进行映射。
  9.             inRange: {          // 选中范围中的视觉配置
  10.                 color: ['blue', '#121122', 'red'], // 定义了图形颜色映射的颜色列表,
  11.                                                     // 数据最小值映射到'blue'上,
  12.                                                     // 最大值映射到'red'上,
  13.                                                     // 其余自动线性计算。
  14.                 symbolSize: [30, 100]               // 定义了图形尺寸的映射范围,
  15.                                                     // 数据最小值映射到30上,
  16.                                                     // 最大值映射到100上,
  17.                                                     // 其余自动线性计算。
  18.             },
  19.             outOfRange: {       // 选中范围外的视觉配置
  20.                 symbolSize: [30, 100]
  21.             }
  22.         },
  23.         ...
  24.     ]};

例二:

  1. option = {
  2.     visualMap: [
  3.         {
  4.             ...,
  5.             inRange: {          // 选中范围中的视觉配置
  6.                 colorLightness: [0.2, 1], // 映射到明暗度上。也就是对本来的颜色进行明暗度处理。
  7.                                           // 本来的颜色可能是从全局色板中选取的颜色,visualMap组件并不关心。
  8.                 symbolSize: [30, 100]
  9.             },
  10.             ...
  11.         },
  12.         ...
  13.     ]};

更多详情,参见 visualMap.inRange 和 visualMap.outOfRange


转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号