Apache Echarts高级|图表显示优化

文章目录

  • Apeach Echarts高级
    • 一、显示相关
      • 1.主题
      • 2.调色盘
      • 3.样式
      • 4.大小自适应
    • 二、动画的使用
      • 1.加载动画
      • 2.增量动画
      • 3.动画的配置
    • 三、交互API
      • 1.全局echarts对象
      • 2.echartsInstance对象

Apeach Echarts高级

在这里插入图片描述
每个图表均配有对应的源代码以及知识点~~~~
详情可点开对应的图表学习!
各类常用图表总结在此!配合使用更方便~
https://blog.csdn.net/diviner_s/article/details/116072584
官方对应文件工具,有更详细的工具使用方法:
https://echarts.apache.org/zh/option.html

一、显示相关

1.主题

  • 默认主题
    ECharts中默认内置了两套主题:light,dark
    在初始化对象方法init中可以指明

    var mChart = echarts.init(dom,'light')
    var mChart = echarts.init(dom,'dark')
    
  • 自定义主题
    1.在主题编译器中编辑主题
    主题编译器的地址为:https://www.echartsjs.com/theme-builder/

    2.下载主题,是一个js文件
    在线编辑完成主题之后,可以点击下载主题按钮,下载主题的js文件
    在这里插入图片描述
    3.引入主题js文件

    <script src = "js/echarts.min.js"></script>
    <script src = "js/itcast.js"></script>
    

    其中,itcast.js就是下载下来的主题文件

    4.在init方法中使用主题

    var mCharts = echarts.init(document.querySelector("div"),'itcast')
    

    在这里插入图片描述
    init方法中的第二个参数itcast就是主题的名称,对于此图‘itcast’就是对应的名称。

2.调色盘

它是一组颜色,图形、系列会自动从其中选择颜色。

  • 主题调色盘
    在这里插入图片描述

  • 全局调色盘
    全局调色盘是在option下增加一个color的数组

    var option = {// 全局调色盘color: ['red', 'green', 'blue'],......
    }
    mCharts.setOption(option)
    
  • 局部调色盘
    局部调色盘就是在series下增加一个color的数组

    var option = {// 全局调色盘color: ['red', 'green', 'blue'],series: [{type: 'pie',data: pieData,// 局部调色盘color: ['pink', 'yellow', 'black']}]
    }
    mCharts.setOption(option)
    

    需要注意一点的是,如果全局的调色盘和局部的调色盘都设置了,局部调色盘会产生效果,这里面遵从的就近原则。

  • 渐变颜色的实现
    ECharts中,支持线性渐变和径向渐变两种颜色的渐变方式

    • 线性渐变
      线性渐变的类型为 linear , 他需要配置线性的方向, 通过 x, y, x2, y2 即可进行配置x , y , x2 , y2 , 范围从 0 - 1,相当于在图形包围盒中的百分比,如果 global 为 true ,则该四个值是绝对的像素位置
      在下述代码中的 0 0 0 1 意味着从上往下进行渐变

      <!DOCTYPE html><html lang="en">
      <head><meta charset="UTF-8"><script src="lib/echarts.min.js"></script>
      </head>
      <body>
      <div style="width: 600px;height:400px"></div>
      <script>var mCharts = echarts.init(document.querySelector("div"))var xDataArr = ['张三', '李四', '王五', '闰土', '小明', '茅台', '二妞', '大强']var yDataArr = [88, 92, 63, 77, 94, 80, 72, 86]var option = {xAxis: {type: 'category',data: xDataArr},yAxis: {type: 'value'},series: [{type: 'bar',data: yDataArr,itemStyle: {color: {type: 'linear',x: 0,y: 0,x2: 0,y2: 1,colorStops: [{offset: 0, color: 'red' // 0% 处的颜色}, {offset: 1, color: 'blue' // 100% 处的颜色}],globalCoord: false // 缺省为 false}}}]};mCharts.setOption(option)
      </script>
      </body>
      </html>
      </html>
      

      在这里插入图片描述

    • 径向渐变
      线性渐变的类型为 radial , 他需要配置径向的方向, 通过 x , y , r 即可进行配置
      前三个参数分别是圆心 x , y 和半径,取值同线性渐变
      在下述代码中的 0.5 0.5 0.5 意味着从柱的重点点, 向外径向扩散半径为宽度一半的圆

series: [{itemStyle: {color: {type: 'radial',x: 0.5,y: 0.5,r: 0.5,colorStops: [{offset: 0, color: 'red' // 0% 处的颜色}, {offset: 1, color: 'blue' // 100% 处的颜色}],global: false // 缺省为 false}}}
]

在这里插入图片描述

3.样式

  • 直接样式
    • itemStyle

    • textStyle

    • lineStyle

    • areaStyle

    • label

      data: [{value: 11231,name: "淘宝",itemStyle: {color: 'black'}}
      ]
      title: {text: '我是标题',textStyle: {color: 'red'}
      }
      label: {color: 'green'
      }
      

      这些样式一般都可以设置颜色或者背景或者字体等样式,他们会覆盖主题中的样式

  • 高亮样式
    图表中,其实有很多元素都是有两种状态的,一种是默认状态,另一种就是鼠标滑过或者点击形成的高亮状态,而高亮样式是针对于元素的高亮状态设定的样式。
series: [{type: 'pie', //饼状图data: [{value: 11231,name: "淘宝",itemStyle: { // 控制淘宝这一区域的样式color: 'yellow'},label: {color: 'green'},emphasis: {  //控制高亮的样式itemStyle: { // 控制淘宝这一区域的样式color: 'pink'},label: {color: 'pink'}}}]}]

4.大小自适应

  • 步骤1:监听窗口大小变化事件
  • 步骤2:在事件处理函数中调用ECharts实例对象的resize即可

<html lang="en">
<head><script src="js/echarts.min.js">script>
head>
<body>
<div style=" height:400px;border:1px solid red">div><script>var mCharts = echarts.init(document.querySelector("div"))var xDataArr = ['张三', '李四', '王五', '闰土', '小明', '茅台', '二妞', '大强']var yDataArr = [88, 92, 63, 77, 94, 80, 72, 86]var option = {xAxis: {type: 'category',data: xDataArr},yAxis: {type: 'value'},series: [{type: 'bar',data: yDataArr}]};mCharts.setOption(option)// 监听window大小变化的事件window.onresize = function () {// 调用echarts示例对象的resize方法mCharts.resize()}// window.onresize = mCharts.resizescript>
body>
html>

二、动画的使用

1.加载动画

Echarts已经内置好了加载数据的动画,我们只需要直接拿来用,并且控制好时机即可。

  • 显示加载动画
mCharts.showLoading() //一般,我们会在获取图表数据之前 显示加载动画
  • 隐藏加载动画
mCharts.hideLoading() //一般,我们会在获取图表数据之后 隐藏加载动画,显示图表

2.增量动画

增量动画指的是我们在图表中更新数据或者加入新的数据时,需要有个过渡的动画。

我们用setOption更新动画,我们只需要直接添加数据,Echarts会自动找到最新更新的数据位置在哪里,并且通过合适的动画去表现数据的变化。


<html lang="en">
<head><meta charset="UTF-8"><script src="lib/echarts.min.js">script>
head>
<body>
<div style="width: 600px;height:400px">div><button>修改数据button><button id="btnAdd">增加数据button><script>var mCharts = echarts.init(document.querySelector("div"))var xDataArr = ['张三', '李四', '王五', '闰土', '小明', '茅台', '二妞', '大强']var yDataArr = [88, 92, 63, 77, 94, 80, 72, 86]var option = {xAxis: {type: 'category',data: xDataArr},yAxis: {type: 'value'},series: [{type: 'bar',data: yDataArr}]};mCharts.setOption(option)var btn = document.querySelector('button');btn.onclick = function () {var newArr = [68, 62, 93, 67, 64, 90, 52, 36]// setOption的方法可以被调用多次// 新的option 和旧的option配置// 新旧option配置项他们之间不是替换的关系,是相互整合的关系// 我们在设置新的option的时候,只需要考虑到将变化的配置项配置就可以了var option = {series: [{data: newArr,}]};mCharts.setOption(option)}var btnAdd = document.querySelector('#btnAdd')btnAdd.onclick = function () {setInterval(function () {//增加数据xDataArr.push('小明')yDataArr.push(parseInt(50 + Math.random() * 10))var option = {xAxis: {data: xDataArr},series: [{data: yDataArr}]}mCharts.setOption(option)}, 1000)}script>
body>
html>

3.动画的配置

  • 开启动画

    animation: true

  • 动画时长

    animationDuration: 5000 //时长单位是ms

  • 缓动动画

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XKzJ3Cx9-1619513871551)(C:\Users\Diviner\AppData\Roaming\Typora\typora-user-images\image-20210427151243278.png)]
    animationEasing'linear'/'bounceOut'

    linear:线性变化,这样动画效果会很均匀

    bounceOut:回弹动画
    在这里插入图片描述

  • 动画阀值

    animationThreshold: 8

    单种形式的元素数量大于这个阀值时会关闭动画

三、交互API

1.全局echarts对象

全局echarts对象是引入echarts.js文件之后就可以直接使用的

  • echarts.init初始化ECharts实例对象+使用主题

在这里插入图片描述

  • echarts.registerTheme 注册主题,只有注册过的主题,才能在init方法中使用该主题

  • echarts.registerMap

    注册地图数据
    $.get('json/map/china.json', function (chinaJson) {echarts.registerMap('china', chinaJson);});
    geo组件使用地图数据
    var option = {geo: {type: 'map',map: 'china',},
    })
    
  • echarts.connect

    • 一个页面中可以有多个独立的图表
    • 每一个图表对应一个ECharts实例对象
    • connect可以实现多图关联,传入联动目标为EChart实例,支持数组
    
    <html lang="en">
    <head><script src="js/echarts.min.js">script><script src="js/jquery.min.js">script>
    head>
    <body><div style="width: 600px;height:400px;border:1px solid red">div><div style="width: 600px;height:400px;border:1px solid green" id="div1">div><script>var mCharts = echarts.init(document.querySelector("div"), 'itcast')var xDataArr = ['张三', '李四', '王五', '闰土', '小明', '茅台', '二妞', '大强']var yDataArr = [88, 92, 63, 77, 94, 80, 72, 86]var option = {xAxis: {type: 'category',data: xDataArr},toolbox: {feature: {saveAsImage: {}}},yAxis: {type: 'value'},series: [{type: 'bar',data: yDataArr}]};mCharts.setOption(option)$.get('json/map/china.json', function (chinaJson) {echarts.registerMap('china', chinaJson)var mCharts2 = echarts.init(document.querySelector('#div1'));var option2 = {geo: {type: 'map',map: 'china'}}mCharts2.setOption(option2)echarts.connect([mCharts, mCharts2])})script>
    body>
    html>
    

    这样,由于我们打开了toolbox中的saveAslmage,所以会出现下载图片的按钮,而通过echarts.connect([mCharts,mCharts2]),此时点击下载图片按钮,保存下来的图片就是两个图表的图片了。

2.echartsInstance对象

eChartsInstance对象是通过echarts.init方法调用之后得到的

  • echartsInstance.setOption设置或修改图表实例的配置项以及数据多次调用setOption方法实现合并新的配置和旧的配置,可以实现增量动画

  • echartsInstace.resize重新计算和绘制图表

    一般和window对象的resize事件结合使用

    //监听Windows窗口大小变化的事件
    window.onresize = function(){//调用echarts实例对象的resize方法myChart.resize()
    }
    或者这样表示
    window.onresize = mCharts.resize
    
  • echartsInstance.on/echartsInstance.off

    绑定或者解绑事件处理函数

    • 鼠标事件
    常见事件: 'click''dblclick''mousedown''mousemove''mouseup' 等
    事件参数 arg: 和事件相关的数据信息
    mCharts.on('click', function (arg) {// console.log(arg)console.log('饼图被点击了')
    })
    解绑事件:
    mCharts.off('click')
    
  • echartsInstance.dispatchAction

    主动触发某些行为,使用代码模拟用户的行为

    // 触发高亮的行为
    mCharts.dispatchAction({type: "highlight",seriesIndex: 0,dataIndex: 1
    })
    // 触发显示提示框的行为
    mCharts.dispatchAction({type: "showTip",seriesIndex: 0,dataIndex: 3
    })
    
  • echartsInstance.clear

    清空当前实例,会移除实例中所有的组件和图表

    清空之后可以再次setOption

  • echartsInstance.dispose

    销毁实例

    销毁后实例无法再被使用


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部