此篇博文分享自己对于入门学习echart的思路及对常见组件的用法记录,如serise.data和坐标轴对应关系,多个坐标轴,多个grid的对齐,tooltip的超出处理,坐标轴/tooltipformatter的使用等等。

一.思路:

  1. 记录常用组件的重要属性,知道常用组件实现了什么。
  2. 基于常用组件属性的认识,可以分析常见图表组成的组件。
  3. 属性记录结合实际开发使用进行注释及实例说明。
  4. echarts能实现的交互样式非常丰富,一般提出需求的交互样式多能实现,重要的是懂查看官方文档。遇见实现不了的样式,可查找官方实例社区实例,或者直接百度迅速实现。

二.使用步骤:

1.为ECharts准备一个具备大小(宽高)的Dom 并且设置必须为id去获取dom(vue中可使用refs去获取dom),不能设置为class去获取dom

  1. <div id="main" style="width: 600px100%);height:400px;"></div>

2.基于准备好的dom,初始化echarts实例

  1. var myChart = echarts.init(document.getElementById('main'));

3.指定图表的配置项和数据

  1. var option = {}

4.使用刚指定的配置项和数据显示图表。

  1. myChart.setOption(option);

三.配置项:

1.grid:

  1. //grid 组件:直角坐标系内绘图网格,一般情况下单个 grid 组件最多只能放上下(左右)两个 x (y)轴,多于两个 x(y) 轴需要通过配置 offset 属性防止同个位置多个 x 轴的重叠。
  2. grid:{
  3. //grid.left/top/right/bottom 组件离容器的距离。
  4. left:'10%',//默认距离
  5. top:'60',//默认距离
  6.  
  7. width:'auto',//grid 组件的宽度。默认自适应
  8. height:'auto',//grid 组件的高度。默认自适应
  9.  
  10. //grid 区域是否包含坐标轴的刻度标签。这常用于『防止标签溢出』的场景。
  11. //当true时,grid.left/right/top/bottom grid.width/height 决定的是包括了坐标轴标签在内的所有内容所形成的矩形的位置。
    //为false是用于多个grid的对齐
  12. containLabel:true,
  13. },

2.xAxis:

  1. //直角坐标系 grid 中的 x 轴
  2. xAxis:[{
  3. //坐标轴类型,'value' 数值轴,适用于连续数据。
  4. //'category' 类目轴,适用于离散的类目数据,为该类型时必须通过 data 设置类目数据。
  5. //'time' 时间轴,适用于连续的时序数据
  6. //'log' 对数轴。适用于对数数据。
  7. type:'category' //默认值
  8.  
  9. //坐标轴两边留白策略,类目轴和非类目轴的设置和表现不一样。
  10. //类目轴中 boundaryGap 可以配置为 true 和 false。默认为 true,这时候刻度只是作为分隔线,标签和数据点都会在两个刻度之间的带(band)中间。
  11. //非类目轴,包括时间,数值,对数轴,boundaryGap是一个两个值的数组,分别表示数据最小值和最大值的延伸范围,在设置 min 和 max 后无效。
  12. boundaryGap:true
  13.  
  14. //坐标轴轴线相关设置。
  15. axisLine:{
  16. //是否显示坐标轴轴线。
  17. show:true,
  18. }
  19.  
  20. //坐标轴刻度相关设置
  21. axisTick:{
  22. show:true,//默认显示
  23. //坐标轴刻度标签的显示间隔,在类目轴中有效
  24. //默认会采用标签不重叠的策略间隔显示标签。
  25. //可以设置成 0 强制显示所有标签。
  26. interval:'auto',
  27.  
  28. //坐标轴刻度是否朝内,默认朝外。
  29. inside:false
  30. }
  31.  
  32. //坐标轴刻度标签
  33. axisLabel:{
  34. //刻度标签与轴线之间的距离。
  35. margin:8,
  36. rotate:45, //坐标栏文字倾斜
  37.  
  38. //刻度标签的内容格式器
  39. // 使用字符串模板,模板变量为刻度默认标签 {value}
  40. formatter: '{value} kg'
  41.  
  42. 参数一为刻度数值,参数二刻度的索引
  43. formatter:function(value,index){
  44. console.log(value)//会发现value会一次次打印出来
  45. return value.length>6?value.substring(0,6)+'...':value //对坐标轴文字做文字超出限制
  46. }
  47.  
  48. //刻度标签文字的颜色,默认取 axisLine.lineStyle.color。支持回调函数,格式如下
  49. textStyle: {
  50. color: function (value, index) {
  51. return value >= 0 ? 'green' : 'red';
  52. }
  53. }
  54. }
  55. },
  56. {
  57. //第二个x轴
  58. }
  59. ]

3.yAxis:

  1. //直角坐标系 grid 中的 y 轴(配置属性同x轴)
  2. yAxis:[{
  3. axisLabel:{
  4. //刻度标签与轴线之间的距离。(配合grid的left,right等及containLabel:false,进行多个grid的对齐)
  5. margin:8,
  6. }
  7. }]

多个grid对齐:containLabel为false,axisLabel的margin一致,grid的left一致。

 4.series:

  1. //系列列表,声明数据的方式
  2. //当坐标轴上每个区间要多个图表,series数组就加一项对象。如每个坐标区间有折线图和柱状图
  3. //与type为line为例
  4.  
  5. series:[{//区间的图表一
  6. //每个系列通过 type 决定自己的图表类型
  7. type:'line',
  8.  
  9. //系列名称,用于tooltip的显示,legend 的图例筛选
  10. name:'line1',
  11.  
  12. //系列中的数据内容数组。数组项通常为具体的数据项。
  13. data:[],
  14.  
  15. //数据堆叠,同个类目轴上系列配置相同的stack值后,后一个系列的值会在前一个系列的值上相加。
  16. stack:'string',
  17.  
  18. //标记的图形,标记类型包括 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow', 'none'.
  19. //可以通过 'image://url' 设置为图片
  20. symbol:'emptyCircle',
  21. //折线拐点标志的样式。
  22. itemStyle:{
  23. //图形颜色,默认从全局调色盘 option.color 获取颜色,
  24. color:'',
  25. //color支持回调函数
  26. colorfunction(params){
  27. let color = colorArr;//colorArr为定义的颜色数组
  28. return color[params.dataIndex];
  29. }
  30. },
  31. //线条样式。
  32. lineStyle:{},
  33. //图形的高亮样式。
  34. emphasis:{}
  35. },{
  36. type:'bar'
  37. //区间的图表二
  38. }]

series.data:感受数据对应关系
通常来说,数据用一个二维数组表示。如下,每一列被称为一个『维度』。

  1. series: [{
  2. data: [
  3. // 维度X 维度Y 其他维度 ...
  4. [ 3.4, 4.5, 15, 43],
  5. [ 4.2, 2.3, 20, 91],
  6. [ 10.8, 9.5, 30, 18],
  7. [ 7.2, 8.8, 18, 57]
  8. ]
  9. }]

在 直角坐标系 (grid) 中『维度X』和『维度Y』会默认对应于 xAxis 和 yAxis。
在 极坐标系 (polar) 中『维度X』和『维度Y』会默认对应于 radiusAxis 和 angleAxis。

后面的其他维度是可选的,可以在别处被使用,例如:
在 visualMap 中可以将一个或多个维度映射到颜色,大小等多个图形属性上。
在 series.symbolSize 中可以使用回调函数,基于某个维度得到 symbolSize 值。
使用 tooltip.formatter 或 series.label.formatter 可以把其他维度的值展示出来。

特别地,当只有一个轴为类目轴(axis.type 为 'category')的时候,数据可以简化用一个一维数组表示。例如:

  1. xAxis: {
  2. data: ['a', 'b', 'm', 'n']
  3. },
  4. series: [{
  5. // 与 xAxis.data 一一对应。
  6. data: [23, 44, 55, 19]
  7. // 它其实是下面这种形式的简化:
  8. // data: [[0, 23], [1, 44], [2, 55], [3, 19]]
  9. }]

『值』与 轴类型 的关系:
当某维度对应于类目轴(axis.type 为 'category')的时候:

其值须为类目的『序数』(从 0 开始)或者类目的『字符串值』。例如:

  1. xAxis: {
  2. type: 'category',
  3. data: ['星期一', '星期二', '星期三', '星期四']
  4. },
  5. yAxis: {
  6. type: 'category',
  7. data: ['a', 'b', 'm', 'n', 'p', 'q']
  8. },
  9. series: [{
  10. data: [
  11. // xAxis yAxis
  12. [ 0, 0, 2 ], // 意思是此点位于 xAxis: '星期一', yAxis: 'a'。
  13. [ '星期四', 2, 1 ], // 意思是此点位于 xAxis: '星期四', yAxis: 'm'。
  14. [ 2, 'p', 2 ], // 意思是此点位于 xAxis: '星期三', yAxis: 'p'。
  15. [ 3, 3, 5 ]
  16. ]
  17. }]

 

5.tooltip:

提示框组件可以设置在多种地方:
可以设置在全局,即 option.tooltip

可以设置在坐标系中,即 grid.tooltip等,为本坐标系特定的 tooltip 设定。

可以设置在系列中,即 series[i].tooltip,为本系列特定的 tooltip 设定。

可以设置在系列的每个数据项中,即 series.data.tooltip

  1. //提示框组件。
  2. tooltip:{
  3. //触发类型,
  4. //可取值item,数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用。
  5. //取值axis,坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用。
  6. //取值none,什么都不触发。
  7. trigger:'item',//默认
  8.  
  9. //坐标轴指示器配置项。
  10. //tooltip.axisPointer 是配置坐标轴指示器的快捷方式。实际上坐标轴指示器的全部功能,都可以通过轴上的 axisPointer 配置项完成。
  11. axisPointer:{
  12. //指示器类型。'line' 直线指示器,'shadow' 阴影指示器,'none' 无指示器,'cross' 十字准星指示器。
  13. type:'line',//默认值
  14. },
  15.  
  16. //是否将 tooltip 框限制在图表的区域内。
  17. // tooltip 超出外界被截断时,此配置比较有用。当confine也无法改变被外界截断需配合extraCssText属性。
  18. confine:false,
  19.  
  20. //提示框浮层的位置,默认不设置时位置会跟随鼠标的位置。
  21. //通过数组表示提示框浮层的位置,支持数字设置绝对位置,百分比设置相对位置。
  22. //也可通过回调函数
  23. position:['50%', '50%'],// 相对位置,放置在容器正中间,
  24.  
  25. //提示框浮层内容格式器,支持字符串模板和回调函数两种形式。
  26. formatter:'',
  27.  
  28. //额外附加到浮层的 css 样式。如下当浮层溢出容器时设置宽度和折行使之不溢出(需配合confine:true):
  29. extraCssText: 'word-wrap: normal;display: block;max-width: 70%;'
  30.  
  31. }

formatter:
1.字符串模板(支持写入dom):
formatter: '{b0}: {c0}<br />{b1}: {c1}'
模板变量有 {a}, {b},{c},{d},{e},分别表示系列名,数据名,数据值等。 在 trigger 为 'axis' 的时候,会有多个系列的数据,
此时可以通过 {a0}, {a1}, {a2} 这种后面加索引的方式表示系列的索引。 不同图表类型下的 {a},{b},{c},{d} 含义不一样。
其中变量{a}, {b}, {c}, {d}在不同图表类型下代表数据含义为:

折线(区域)图、柱状(条形)图、K线图 : {a}(系列名称),{b}(类目值),{c}(数值), {d}(无)

散点图(气泡)图 : {a}(系列名称),{b}(数据名称),{c}(数值数组), {d}(无)

地图 : {a}(系列名称),{b}(区域名称),{c}(合并数值), {d}(无)

饼图、仪表盘、漏斗图: {a}(系列名称),{b}(数据项名称),{c}(数值), {d}(百分比)

更多其它图表模板变量的含义可以见相应的图表的 label.formatter 配置项。

实例代码:

  1. tooltip: {
  2. trigger: 'axis',
  3. axisPointer: {
  4. type: 'none'
  5. },
  6. formatter:`{b}</br>
  7. <div style="display:inline-block;background-color:#003366;
  8. width:16px;height:10px;border-radius:3px;
  9. margin-right:4px;">
  10. </div>
  11. {a0}:{c0}个</br>
  12.  
  13. <div style="display:inline-block;background-color:#006699;
  14. width:16px;height:10px;border-radius:3px;
  15. margin-right:4px;">
  16. </div>
  17. {a1}:{c1}个</br>
  18.  
  19. <div style="display:inline-block;background-color:#4cabce;
  20. width:16px;height:10px;border-radius:3px;
  21. margin-right:4px;">
  22. </div>
  23. {a2}:{c2}个</br>
  24.  
  25. <div style="display:inline-block;background-color:#e5323e;
  26. width:16px;height:10px;border-radius:3px;
  27. margin-right:4px;">
  28. </div>
  29. {a3}:{c3}个</br>`
  30. },

2.回调函数:
回调函数格式:(params: Object|Array, ticket: string, callback: (ticket: string, html: string)) => string
第一个参数 params 是 formatter 需要的数据集,为Object还是Array看data数组中的数据为数组还是对象。格式如下:

  1. {
  2. componentType: 'series',
  3. // 系列类型
  4. seriesType: string,
  5. // 系列在传入的 option.series 中的 index
  6. seriesIndex: number,
  7. // 系列名称
  8. seriesName: string,
  9. // 数据名,类目名
  10. name: string,
  11. // 数据在传入的 data 数组中的 index
  12. dataIndex: number,
  13. // 传入的原始数据项
  14. data: Object,
  15. // 传入的数据值。在多数系列下它和 data 相同。在一些系列下是 data 中的分量(如 map、radar 中)
  16. value: number|Array|Object,
  17. // 坐标轴 encode 映射信息,
  18. // key 为坐标轴(如 'x' 'y' 'radius' 'angle' 等)
  19. // value 必然为数组,不会为 null/undefied,表示 dimension index 。
  20. // 其内容如:
  21. // {
  22. // x: [2] // dimension index 为 2 的数据映射到 x 轴
  23. // y: [0] // dimension index 为 0 的数据映射到 y 轴
  24. // }
  25. encode: Object,
  26. // 维度名列表
  27. dimensionNames: Array<String>,
  28. // 数据的维度 index,如 0 或 1 或 2 ...
  29. // 仅在雷达图中使用。
  30. dimensionIndex: number,
  31. // 数据图形的颜色
  32. color: string,
  33.  
  34. // 饼图的百分比
  35. percent: number,
  36.  
  37. }

实例图片:

实例代码:

  1. formatter:function(params){
  2. console.log(params)
  3. res=params[0].name+'<br/>'
  4. for(let i = 0;i<params.length;i++){
  5. res+=`<div style="display:inline-block;width:20px;height:10px;
  6. border-radius:2px;margin-right:6px;
  7. background-color:${params[i].color};"></div>
  8.  
  9. ${params[i].seriesName}:${params[i].value}个
  10. </br>`
  11. }
  12. return res
  13. }

当为坐标轴params参数中会有axis的信息,如下图:

使用formmatter,参数一的属性可以实现许多功能,要多加思考:

如dataIndex的使用:y轴的label标签进行了字数多余限定字符个数后用省略号代替,这样当tooltip使用时,会导致也显示省略的,把label的原数据也重新赋值一份,用dataIndex属性去取对应没省略的数据。

3.字符串模板和回调函数的比较:
字符串模板不适合在多个legend个性化内容情景:会产生切换legend时发生问题,如下图:

 6.legend:

  1. //图例组件:展现了不同系列的标记,颜色(不同颜色图形)和名字(文本),颜色和名字样式多可设置。可以通过点击图例控制哪些系列不显示
  2. legend:{
  3. //data.left/right/top/bottom 图例组件离容器左右上下侧的距离。
  4. //值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,,也可以是 'left', 'center', 'right'。
  5. left:'center',
  6.  
  7. //如果要设置单独一项的样式,也可以把该项写成配置项对象。此时必须使用 name 属性对应表示系列的 name。
  8. data: [{
  9. //图例项的名称,应等于某系列的name值
  10. name: '系列1',
  11. // 图例项的 icon。
  12. icon: 'circle',//包括 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow', 'none','image://url' 设置为图片
  13. // 设置文本为红色
  14. textStyle: {
  15. color: 'red'
  16. }
  17. }]
  18. },

6.color:
调色盘颜色列表。如果系列没有设置颜色,则会依次循环从该列表中取颜色作为系列颜色。

默认为:
color:['#c23531','#2f4554', '#61a0a8', '#d48265', '#91c7ae','#749f83', '#ca8622', '#bda29a','#6e7074', '#546570', '#c4ccd3']

echarts学习思路及常用属性记录的更多相关文章

  1. WPF DataGrid常用属性记录

    WPF DataGrid常用属性记录 组件常用方法: BeginEdit:使DataGrid进入编辑状态. CancelEdit:取消DataGrid的编辑状态. CollapseRowGroup:闭 ...

  2. android布局常用属性记录

    android布局常用属性记录   http://blog.csdn.net/xn4545945/article/details/7717086这里有一部分别人总结的其余的: align:对齐 par ...

  3. 1+x证书学习日志——css常用属性

     ## css常用属性:             1:文本属性:                 文本大小:  font-size:18px;                 文本颜色    colo ...

  4. ListView@常用属性记录

    android:stackFromBottom="true" | "false" 默认false 说明:当listview加载完毕,显示最下面的内容,或者显示最 ...

  5. UITextField 对键盘一些常用属性 记录一下

    autocapitalizationType            设置键盘自动大小写的属性     UITextAutocapitalizationTypeNone autocorrectionTy ...

  6. CentOS7学习笔记(四) 常用命令记录

    查看命令的帮助信息 man 命令查看帮助信息 在想要获取帮助信息的命令前面加上man即可,例如查看ls命令的帮助信息 [root@localhost ~]# man ls help 命令查看帮助信息 ...

  7. Echarts学习记录——如何去掉网格线及网格区域颜色

    关键属性 splitLine和splitArea,可以设置相关的属性 示例代码 <!DOCTYPE html> <html lang="en"> <h ...

  8. Echarts学习记录——如何给x轴文字标签添加事件

    Echarts学习记录——如何给x轴文字标签添加事件 关键属性 axisLabel下属性clickable:true 并给图表添加单击事件 根据返回值判断点击的是哪里 感觉自己的方法有点变扭,有更好办 ...

  9. 《ORACLE数据库管理与开发》第三章学习之常用函数记录

    <ORACLE数据库管理与开发>第三章学习之常用函数记录 注:文章中的*代表所要操作的列名 1.lower(*)/upper(*),将此列下的值转为小写/大写 2.initcap(*):把 ...

随机推荐

  1. 【转载】关于Maven项目build时出现No compiler is provided in this environment的处理

    参考地址;https://blog.csdn.net/lslk9898/article/details/73836745

  2. 使用macOS苹方替换Windows 10微软雅黑

    关于微软雅黑 Windows从Vista开始用到现在的”微软雅黑”十多年以来基本没什么大改动,而大家的显示器从CRT进化到了IPS高分屏,十年前看着还OK的字体现在在绝大多数屏幕上可能就是这个样子的: ...

  3. java 字符串的截取、转换、分割

    1.截取 package java07; /* 字符串的截取方法: public String substring(int index):截取从参数位置一直到字符串末尾,返回新字符串 public S ...

  4. robotframework的if else

  5. mongodb 索引基础

    一 .索引基础:    MongoDB的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的优化技巧.下面是创建索引的命令:    > db.test.ensureIndex({&quo ...

  6. Vue实现active点击切换样式

    1.html <div class="filter-nav" v-for="(item,index) in filterData.navTab" :key ...

  7. python py文件转换成exe

    1.首先学会了最简单的方法 1)pip install pyinstaller  安装pyinstall 2)pyinstaller  aaaa.py 转换,会在当前目录下建两个文件夹,其中一个文件夹 ...

  8. CentOS7.5 安装部署Apache+Mysql+Php

    系统:CentOS7.5 安装Apache 安装 yum -y install httpd 开启apache服务 systemctl start httpd.service 设置apache服务开机启 ...

  9. vue部署后刷新404问题

    为什么会404NotFound Internet Information Services (IIS) 第一步:安装 IIS UrlRewrite 第二步:配置重写URL规则 在你的网站根目录中创建一 ...

  10. HTTP协议-Cookie和Session详解

    前言: 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的跟踪技术就是Cookie和Session. Cookie通过在客户端记录信息确定用户身份,Session通过在 ...