ECharts教程

参考博客:pink老师学习之Echarts
注:本人擅长于后端开发,前端不是很熟练。闲暇时间会跟着pink老师的视频敲敲前端代码,收益颇多<^ 。^>

一、ECharts介绍

官网链接:Apache ECharts

ECharts是一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器,底层依赖矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表(折线图、柱状图、散点图、饼图、K线图且支持自定义)。

二、ECharts入门教程

2.1、官方入门教程: 5分钟上手ECharts

本人一般都喜欢下载压缩版js文件,下载地址为: 获取ECharts.min.js (先点击Dist跳转至GitHub,再选择echarts.min.js,点击后右键Raw,选择链接另存为你的项目目录下即可)

入门篇教程中,我们可以知道绘制一个简单的图表需要如下几步:

  1. 下载并引入echarts.min.js文件 -------->图表依赖这个js文件
  2. 准备一个具备大小的DOM容器 --------->生成的图表会放入这个容器内
  3. 初始化echarts实例对象--------------> 通过 echarts.init 方法初始化一个 echarts 实例
  4. 指定配置项和数据(option)---------->根据具体需求修改配置选项
  5. 将配置项设置给echarts实例对象-------->让echarts对象根据修改好的配置生效
<!-- 为 ECharts 准备一个定义了宽高的 DOM -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('main'));// 指定图表的配置项和数据var option = {title: {text: 'ECharts 入门示例'},tooltip: {},legend: {data: ['销量']},xAxis: {data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']},yAxis: {},series: [{name: '销量',type: 'bar',data: [5, 20, 36, 10, 10, 20]}]};// 使用刚指定的配置项和数据显示图表。myChart.setOption(option);
</script>

2.2、ECharts的基础配置

官网给出了许多示例:链接 这些都可以直接拿来用,但里面的一些配置需要根据自己的需求来修改,所以我们需要了解ECharts的基础配置。

  • 常用的主要配置:

    需要了解的主要配置大致有:series xAxis yAxis grid tooltip title legend color 详细配置可移步官方配置项参考文档: 详细配置也可参考菜鸟教程: 移步菜鸟教程

  • series

    • 系列列表。每个系列通过 type 决定自己的图表类型

    • 大白话:图标数据,指定什么类型的图标,可以多个图表重叠。

    • series: [{name: '销量',  // 系列名称type: 'bar',  // 系列图表类型data: [5, 20, 36, 10, 10, 20]  // 系列中的数据内容
      }]
      
  • xAxis:直角坐标系 grid 中的 x 轴

    • boundaryGap: 坐标轴两边留白策略 true,这时候刻度只是作为分隔线,标签和数据点都会在两个刻度之间的带(band)中间。
  • yAxis:直角坐标系 grid 中的 y 轴

  • grid:直角坐标系内绘图网格。

  • title:为图表配置标题

  • tooltip:配置提示信息

  • toolbox:工具栏

  • legend:图例组件展现了不同系列的标记(symbol),颜色和名字。可以通过点击图例控制哪些系列不显示。

    legend: {data: [{name: '系列1',// 强制设置图形为圆。icon: 'circle',// 设置文本为红色textStyle: {color: 'red'}}]
    }
    
  • color:调色盘颜色列表

  • series.stack: 数据堆叠,同个类目轴上系列配置相同的stack值后 后一个系列的值会在前一个系列的值上相加。 不想堆叠直接删掉stack属性即可。


三、ECharts项目实战

视频教程地址: pink老师之基于ECharts数据可视化项目

3.1、项目效果图:


3.2、项目前期准备:

项目核心:先布好局,之后利用ECharts填充图表。

设计稿是1920px采用屏幕自适应

  • flexible.js : 检测浏览器宽度、修改html文字大小。 项目引入后手动修改源码的var e=i.clientWidth/24; 把屏幕分为 24 等份github地址:https://github.com/amfe/lib-flexible

  • rem单位 :页面元素根据 rem 适配大小,配合 cssrem 插件(vscode)。 idea中需安装px2rem插件

  • root fontsize 就是 htmlfontsize 的大小 。 项目中基准值是 80px,则其数值修改为80

  • flex 布局 : 进行页面快速布局。

  • jQuery.min.js: jQuery版本

  • px2rem插件的使用:

    1. 使用快捷键 alt + d 可以将 局部pxrem
    2. 还可以使用 ctrl+ alt + d 进行全局转换。
3.3、基础设置知识点
3.3.1、CSS 的 background 属性的缩写顺序

background的值的顺序是background-color,background-image,background-repeat,background-attachment,background-position,background-size。 如果用 background-size,一定要用 / 分隔。

body
{
background: #ff0000 url(/i/eg_bg_03.gif) no-repeat fixed center/100% 100%;
}
3.3.2、边框图片 border-image

border-image 是 border-image-source、border-image-slice、border-image-width、border-image-outset 和 border-image-repeat 属性的简写,其中:

  • border-image-source:定义边框图像的路径;
  • border-image-slice:定义边框图像从什么位置开始分割(不带单位);
  • border-image-width:定义边框图像的厚度(宽度)(带单位: 上、右、下、左);
  • border-image-outset:定义边框图像的外延尺寸(边框图像区域超出边框的量);
  • border-image-repeat:定义边框图像的平铺方式。

border-image-slice 属性可以接收三种类型的值:

  • number:数值,用具体数值指定图像分割的位置,数值代表图像的像素位置或向量坐标,不允许负值;
  • percentage:百分比,相对于图像尺寸的百分比,图像的宽度影响水平方向,高度影响垂直方向;
  • fill:保留边框图像的中间部分。

border-image-repeat 属性用来设置如何填充使用 border-image-slice 属性分割的图像边框,例如平铺、拉伸等等,该属性的语法格式如下:

border-image-repeat:[ stretch | repeat | round | space ]{1,2}

语法说明如下:

  • stretch:将被分割的图像使用拉伸的方式来填充满边框区域;
  • repeat:将被分割的图像使用重复平铺的方式来填充满边框区域,当图像碰到边界时,超出的部分会被截断;
  • round:与 repeat 关键字类似,不同之处在于,当背景图像不能以整数次平铺时,会根据情况缩放图像;
  • space:与 repeat 关键字类似,不同之处在于,当背景图像不能以整数次平铺时,会用空白间隙填充在图像周围。

border-image-repeat 属性能够接受 1~2 个参数值:

  • 如果提供两个参数,那么第一个参数将用于水平方向,第二个将用于垂直方向;
  • 如果只提供一个参数,那么将在水平和垂直方向都应用该值。

或者使用相对定位和绝对定位再结合 ::before 和 ::after会出四角角标。

3.3.3、flex布局页面
<!--页面主体 -->
<section class="viewport"><div class="column"><!-- 公用样式 --><div class="panel line"><h2>柱形图-横向 </h2><div class="chart"><!-- 数据图--></div><!-- 角标 --><div class="panel-footer"></div></div></div><div class="column"></div><div class="column"><div class="panel bar"></div></div>
</section>
<style>
/*页面主体*/
.viewport {display: flex;min-width: 12.8rem;max-width: 24rem;margin: 0 auto;padding: 0.125rem 0.125rem 0;min-height: 9.75rem;
}.viewport .column {flex: 3;
}.viewport .column:nth-child(2) {flex: 4;margin: 0.125rem 0.1875rem 0;overflow: hidden;
}
</style>
3.3.4、flex布局li

.viewport .no .no-hd {position: relative;border: 1px solid rgba(25, 186, 13, 0.17);
}.viewport .no .no-hd::before {position: absolute;top: 0;left: 0;content: "";width: 30px;height: 10px;border-top: 2px solid #02A6B5;border-left: 2px solid #02A6B5;
}.viewport .no .no-hd::after {content: "";position: absolute;width: 30px;height: 10px;border-bottom: 2px solid #02a6b5;border-right: 2px solid #02a6b5;right: 0;bottom: 0;
}.viewport .no .no-hd ul {display: flex;
}.viewport .no .no-hd ul li {position: relative;flex: 1;line-height: 1rem;font-size: 0.675rem;color: #FFEB7B;text-align: center;font-family: "electronicFont", serif;
}.viewport .no .no-hd ul li::after {content: "";position: absolute;top: 25%;right: 0;height: 50%;width: 1px;background: rgba(255, 255, 255, 0.2);
}
3.4、折线图实例

需求1: 更换图例组件文字颜色 rgba(255,255,255,.5) 文字大小为12

legend: {textStyle: {color: '#4c9bfd'},right: '10%'
},

需求2: 修改图表大小

grid: {left: '3%',top: '20%',right: '4%',bottom: '3%',containLabel: true,show: true,borderColor: '#012f4a',
},

需求3: x轴相关配置

  • 刻度去除
  • x轴刻度标签字体颜色:#4c9bfd
  • 剔除x坐标轴线颜色(将来使用Y轴分割线)
  • 轴两端是不需要内间距 boundaryGap
    xAxis: {type: 'category',data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],axisTick: {show: false // 去除刻度线},axisLabel: {color: '#4c9bfd' // 文本颜色},axisLine: {show: false // 去除轴线},boundaryGap: false  // 去除轴内间距},

需求4: y轴的定制

  • 刻度去除
  • 字体颜色:#4c9bfd
  • 分割线颜色:#012f4a
    yAxis: {type: 'value',axisTick: {show: false  // 去除刻度},axisLabel: {color: '#4c9bfd' // 文字颜色},splitLine: {lineStyle: {color: '#012f4a' // 分割线颜色}}},

需求5: 两条线形图定制

  • 颜色分别:#00f2f1 #ed3f35
  • 把折线修饰为圆滑 series 数据中添加 smooth 为 true
    color: ['#00f2f1', '#ed3f35'],series: [{name:'新增粉丝',data: [820, 932, 901, 934, 1290, 1330, 1320],type: 'line',// 折线修饰为圆滑smooth: true,},{name:'新增游客',data: [100, 331, 200, 123, 233, 543, 400],type: 'line',smooth: true,}]

需求6: 配置数据

// x轴的文字
xAxis: {type: 'category',data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
}
// 图标数据series: [{name:'新增粉丝',data:  [24, 40, 101, 134, 90, 230, 210, 230, 120, 230, 210, 120],type: 'line',smooth: true},{name:'新增游客',data: [40, 64, 191, 324, 290, 330, 310, 213, 180, 200, 180, 79],     type: 'line',smooth: true}}]

需求7: 新增需求 点击 2020年 2021年 数据发生变化

以下是后台送过来数据(ajax请求过来的)

 var yearData = [{year: '2020',  // 年份data: [  // 两个数组是因为有两条线[24, 40, 101, 134, 90, 230, 210, 230, 120, 230, 210, 120],[40, 64, 191, 324, 290, 330, 310, 213, 180, 200, 180, 79]]},{year: '2021',  // 年份data: [  // 两个数组是因为有两条线[123, 175, 112, 197, 121, 67, 98, 21, 43, 64, 76, 38],[143, 131, 165, 123, 178, 21, 82, 64, 43, 60, 19, 34]]}];
  • tab栏切换事件
  • 点击2020按钮 需要把 series 第一个对象里面的data 换成 2020年对象里面data[0]
  • 点击2020按钮 需要把 series 第二个对象里面的data 换成 2020年对象里面data[1]
  • 2021 按钮同样道理
3.5、使用echarts完成中国省市区县镇地图展示

参考博客地址: 点击学习

3.6、Echarts-map使用(扩展)

参考社区的例子:https://gallery.echartsjs.com/editor.html?c=x0-ExSkZDM (模拟飞机航线)

实现步骤:

  • 第一需要下载china.js提供中国地图的js文件
  • 第二个因为里面代码比较多,我们新建一个新的js文件 myMap.js 引入
  • 使用社区提供的配置即可。

需要修改:

  • 去掉标题组件
  • 去掉背景颜色
  • 修改地图省份背景 #142957 areaColor 里面做修改
  • 地图放大通过 zoom 设置为1.2即可
 geo: {map: 'china',zoom: 1.2,label: {emphasis: {show: false}},roam: false,itemStyle: {normal: {areaColor: '#142957',borderColor: '#0692a4'},emphasis: {areaColor: '#0b1c2d'}}},
3.7、大致实现的效果

在实现交通线路图以及3D图形时,请求官方的json数据会超时,故而这里没有测试出来。。。


ECharts实战教程相关推荐

  1. Spring Boot + vue-element 开发个人博客项目实战教程(二十五、项目完善及扩展(前端部分))

    ⭐ 作者简介:码上言 ⭐ 代表教程:Spring Boot + vue-element 开发个人博客项目实战教程 ⭐专栏内容:零基础学Java.个人博客系统 ⭐我的文档网站:http://xyhwh- ...

  2. 视频教程-jsp servlet mysql实现学生成绩管理系统实战教程-Java

    jsp servlet mysql实现学生成绩管理系统实战教程 软件工程硕士毕业,目前就职于上海电信研究院,有三年Java开发经验,五年PHP开发经验. 李礼强 ¥136.00 立即订阅 扫码下载「C ...

  3. PyTorch 高级实战教程:基于 BI-LSTM CRF 实现命名实体识别和中文分词

    20210607 https://blog.csdn.net/u011828281/article/details/81171066 前言:译者实测 PyTorch 代码非常简洁易懂,只需要将中文分词 ...

  4. ArcGIS水文分析实战教程(9)雨量计算与流量统计

    ArcGIS水文分析实战教程(9)雨量计算与流量统计 本章导读:降水是水文循环中重要的一环,降水包括雨.雪.雾.露.雹等,本章介绍的是降雨的环节.通过雨量站与插值的方式,实现雨量的空间分布就算,为水文 ...

  5. 宏基因组分析实战教程1. 背景知识

    上次我写的学习经验和推荐的教程--<微生物组入门必读+宏基因组实操课程=新老司机赶快上车>,小伙伴们当天阅读破2700+人次,3.5天破3000+,达到了宏基因组快车满三千人发车的要求.我 ...

  6. js模板字符串自定义类名_【Vue.js 入门到实战教程】07Vue 组件注册 | 基本使用和组件嵌套...

    来源 | https://xueyuanjun.com/post/21929除了前面介绍的基本语法之外,Vue.js 还支持通过组件构建复杂的功能模块,组件可以称得上是 Vue.js 的灵魂,是 Vu ...

  7. python商业爬虫教程_廖雪峰老师的Python商业爬虫课程 Python网络爬虫实战教程 体会不一样的Python爬虫课程...

    廖雪峰老师的Python商业爬虫课程 Python网络爬虫实战教程 体会不一样的Python爬虫课程 1.JPG (53.51 KB, 下载次数: 1) 2019-8-9 08:15 上传 2.JPG ...

  8. Swift游戏开发实战教程(大学霸内部资料)

    Swift游戏开发实战教程(大学霸内部资料) 试读下载地址:http://pan.baidu.com/s/1sj7DvQH 介绍:本教程是国内第一本Swift游戏开发专向资料. 本教程详细讲解记忆配对 ...

  9. python教程下载地址-最新python实战教程网盘下载地址

    原标题:最新python实战教程网盘下载地址 Python在程序员中始终流行:40%的受访者都会学习,44%的受访者每周都会学习.目前技术领域最热点的技术排名,排在前一位的是:Python.Pytho ...

  10. python3项目-终于找到python3项目实战教程

    列表的元素是可以变动的,比如增加.删除.修改,不过需要注意的是,列表的元素不是基本数据类型,都是一个个的标识符引用对象.以下是小编为你整理的python3项目实战教程 先定义一个列表 a = [123 ...

最新文章

  1. 习题3-3 数数字(Digit Counting , ACM/ICPC Danang 2007, UVa1225)
  2. Android应用安全之Content Provider安全
  3. linux脚本实现scp命令自动输入密码和yes/no等确认信息
  4. jquery-autocomplete学习(转)
  5. eclipse 64位_如何安装调试 Java开发工具Eclipse和JDK环境
  6. [转载]设计模式解密(23) - 总结篇
  7. 如何在SQL Server中创建SQL依赖关系图
  8. 绿联USB网卡的使用记录
  9. 用.NET开发MSN聊天机器人
  10. 闲云野鹤:吃鸡(四)之场景制作—用unity内置草功能制作草
  11. 3.Linux文件系统
  12. 几款常用UML建模工具解析
  13. 基于jsp+mysql+Spring+mybatis的ssm酒店管理系统
  14. MinIO InvalidEndpointException: invalid host问题解决
  15. unity3dk帧_Unity K帧动画
  16. final修饰的变量就是常量?
  17. GameFramework篇:StarForce资源热更新讲解(二:具体操作步骤)
  18. 基于北斗RDSS短报文的海洋浮标在线水质/气象综合监测系统
  19. 力扣 2090. 半径为 k 的子数组平均值
  20. 在Spring Cloud中.yml与.properties

热门文章

  1. 别在学习框架了,那些让你起飞的计算机基础知识。
  2. 简单理解以太网和令牌环网【区别】
  3. 苹果手机还原网络设置会怎样_如果你的苹果手机信号不好!要记得这样设置,让你信号轻松满格...
  4. win7显示桌面计算机图标,win7显示桌面图标不见了如何恢复【图文】
  5. python3d动图_如何用Python制作3D动态航线图
  6. 计算机刷bios版本,主板刷bios的6种方法,电脑刷bios方法-
  7. 基于Bootstrap+Django+Python的点菜信息管理系统
  8. 详解如何用爬虫工具批量采集阿里巴巴批发网商品数据
  9. 谷歌浏览器设置定位_谷歌浏览器手动设置位置信息
  10. wap2app检测版本升级