Echarts数据可视化一个项目带你学会酷炫的数据可视化
Posted 前端小二
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Echarts数据可视化一个项目带你学会酷炫的数据可视化相关的知识,希望对你有一定的参考价值。
文章の目录
- 🏆 学习の目标
- 🥇 一、项目の介绍
- 🥇 二、项目用到的技术
- 🥇 三、Echarts-介绍
- 🥇 四、Echarts-体验
- 🥇 五、Echarts-基础配置
- 🥇 六、rem适配
- 🥇 八、边框图片
- 🥇 九、公用面板样式
- 🥇 十、概览区域(overview)-布局
- 🥇 十一、监控区域(monitor)-布局
- 🥇 十二、监控区域tab栏切换、动画效果
- 🥇 十三、点位区域布局
- 🥇 十四、点位区域-饼图
- 🥇 十五、地图区域 (map) -预留布局
- 🥇 十六、用户统计 (users) -布局
- 🥇 十七、用户统计 (users) -柱状图
- 🥇 十八、订单区域(order)-布局
- 🥇 十九、订单区域(order)-效果
- 🥇 二十、销售统计( sales )-布局
- 🥇 二十一、销售统计( sales )-线形图
- 🥇 二十二、销售统计( sales )-切换效果
- 🥇 二十三、渠道区域&销售进度-布局
- 🥇 二十四、渠道分布(channel)-雷达图
- 🥇 二十五、销售进度 (quarter) -饼状图
- 🥇 二十六、热销排行(top)-布局
- 🥇 二十七、热销排行(top)-效果
- 🥇 二十八、Echarts-社区介绍
- 🥇 二十九、Echarts-map使用(扩展)
- 🥇 知识の总结
- 🥇 推荐の内容
🏆 学习の目标
1.学会使用echarts库里的各种矢量图形表
2. 学会通过修改库中矢量图形的参数去定制自己需要的矢量图表
3. 学会边框图形的用法
🥇 一、项目の介绍
应对现在数据可视化的趋势,越来越多企业需要在很多场景(营销数据,生产数据,用户数据)下使用,可视化图表来展示体现数据,让数据更加直观,数据特点更加突出。我们引入 ‘立可得’ 数据可视化项目。
该项目除了使用了基础的DIV+CSS布局,还引入了一些C3技术,还引入了各类图表的绘制,以及高级的地图数据可视化案例。主要功能有:饼状图、柱状图、线形图、地图 …
最终效果展示:
🥇 二、项目用到的技术
完成该项目需要具备以下知识:
- div + css 布局
- flex 布局
- css3动画
- css3渐变
- css3边框图片
- 原生js + jquery 使用
- rem适配
- echarts基础
粗略代码统计:
- css 580行
- html 450行
- js 400行 (有效)
🥇 三、Echarts-介绍
ECharts,一个使用 javascript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表。
通俗讲:
🥇 四、Echarts-体验
🥈 4.1 Echarts 使用步骤
🏅 4.1.1步骤一
🏅 4.1.2步骤二
引入echarts dist/echarts.min.js
🏅 4.1.3步骤三
准备一个具备大小的DOM容器
代码示例:
<div id="main" style="width: 600px;height:400px;"></div>
🏅 4.1.4步骤四
初始化echarts实例对象
var myChart = echarts.init(document.getElementById('main'));
🏅 4.1.5步骤五
指定配置项和数据(option)
var option =
xAxis:
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
,
yAxis:
type: 'value'
,
series: [
data: [820, 932, 901, 934, 1290, 1330, 1320],
type: 'line'
]
;
📣注意:小伙伴们在指定配置项的时候注意一定要带上var哦;❗❗❗
🏅 4.1.6步骤六
将配置项设置给echarts实例对象
myChart.setOption(option);
🥇 五、Echarts-基础配置
以下配置很重要,小伙伴们一定要牢记哦!:series
xAxis
yAxis
grid
tooltip
title
legend
color
-
series
- 系列列表。每个系列通过
type
决定自己的图表类型 - :图标数据,指定什么类型的图标,可以多个图表重叠。
- 系列列表。每个系列通过
-
xAxis:直角坐标系 grid 中的 x 轴
- boundaryGap: 坐标轴两边留白策略 true,这时候刻度只是作为分隔线,标签和数据点都会在两个刻度之间的带(band)中间。
-
yAxis:直角坐标系 grid 中的 y 轴
-
grid:直角坐标系内绘图网格。
-
title:标题组件
-
tooltip:提示框组件
-
legend:图例组件
-
color:调色盘颜色列表
数据堆叠,同个类目轴上系列配置相同的
stack
值后 后一个系列的值会在前一个系列的值上相加。
代码实例:
var option =
color: ['pink', 'blue', 'green', 'skyblue', 'red'],
title:
text: '我的折线图'
,
tooltip:
trigger: 'axis'
,
legend:
data: ['直播营销', '联盟广告', '视频广告', '直接访问']
,
grid:
left: '3%',
right: '3%',
bottom: '3%',
// 当刻度标签溢出的时候,grid 区域是否包含坐标轴的刻度标签。如果为true,则显示刻度标签
// 如果left right等设置为 0% 刻度标签就溢出了,此时决定是否显示刻度标签
containLabel: true
,
toolbox:
feature:
saveAsImage:
,
xAxis:
type: 'category',
// 坐标轴两边留白策略 true,这时候刻度只是作为分隔线,标签和数据点都会在两个刻度之间的带(band)中间。
boundaryGap: false,
data: ['星期一', '星期二', '周三', '周四', '周五', '周六', '周日']
,
yAxis:
type: 'value'
,
series: [
name: '直播营销',
// 图表类型是线形图
type: 'line',
data: [120, 132, 101, 134, 90, 230, 210]
,
name: '联盟广告',
type: 'line',
data: [220, 182, 191, 234, 290, 330, 310]
,
name: '视频广告',
type: 'line',
data: [150, 232, 201, 154, 190, 330, 410]
,
name: '直接访问',
type: 'line',
data: [320, 332, 301, 334, 390, 330, 320]
]
;
🥇 六、rem适配
-
设计稿是1920px
-
PC端适配: 宽度在 1024~1920之间页面元素宽高自适应
-
flexible.js 把屏幕分为 24 等份
-
cssrem 插件的基准值是 80px
插件-配置按钮—配置扩展设置–Root Font Size 里面 设置。
但是别忘记重启vscode软件保证生效
-
要把屏幕宽度约束在1024~1920之间有适配。
-
// 实现rem适配
@media screen and (max-width: 1024px)
html
font-size: 42.66px !important;
@media screen and (min-width: 1920px)
html
font-size: 80px !important;
🥈 7.1 html结构
- 效果图: 1920px * 1078px
- body 设置背景图 ,行高1.15
- viewport 主体容器,限制最小宽度1024px,与最大宽度1920px,最小高度780px。
- 需要居中显示
- 使用logo.png做为背景图,在容器内显示
- 内间距 88px 20px 0
- column 列容器,分三列,占比 3:4:3
- 中间容器外间距 32px 20px 0
<body>
<div class="viewport">
<div class="column">
<!--概览-->
<div></div>
<!--监控-->
<div></div>
<!--点位-->
<div></div>
</div>
<div class="column">
<!--地图-->
<div></div>
<!--用户-->
<div></div>
</div>
<div class="column">
<!--订单-->
<div></div>
<!--销售-->
<div></div>
<div>
<!--渠道-->
<div></div>
<!--季度-->
<div></div>
</div>
<!--排行-->
<div></div>
</div>
</div>
</body>
📣注意:以上结构代码小伙伴可以参考使用,最好自己写出来进行练习哦;❗❗❗
🥈 7.2 css样式
/* 基础布局 */
body
font-family: Arial, Helvetica, sans-serif;
margin: 0;
padding: 0;
font-size: 0.5rem;
line-height: 1.15;
background: url(../images/bg.jpg) no-repeat 0 0 / cover;
h4,h3,ul
margin: 0;
padding: 0;
font-weight: normal;
ul
list-style: none;
a
text-decoration: none;
.viewport
max-width: 1920px;
min-width: 1024px;
margin: 0 auto;
min-height: 780px;
padding: 3.667rem 0.833rem 0;
background: url(../images/logo.png) no-repeat 0 0 / contain;
display: flex;
.column
flex: 3;
position: relative;
.column:nth-child(2)
flex: 4;
margin: 1.333rem 0.833rem 0;
📣注意:以上样式代码小伙伴可以参考使用,最好自己写出来进行练习哦;❗❗❗
🥇 八、边框图片
css3中自适应边框图片运用:
组合写法:
border-image: url("images/border.jpg") 167/20px round;
拆分写法:
border-image-source: url("images/border.jpg");
border-image-slice: 167 167 167 167;
border-image-width: 20px;
border-image-repeat: round;
解释:
- 第一行是边框图片资源地址
- 第二行是裁剪尺寸(上 右 下 左)单位默认px,可使用百分百。
- 第三行是边框图片的宽度,默认边框的宽度。
- 第四行是平铺方式:
- stretch 拉伸(默认)
- repeat 平铺,从边框的中心向两侧开始平铺,会出现不完整的图片。
- round 环绕,是完整的使用切割后的图片进行平铺。
代码实例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>边框图片</title>
<style>
ul
margin: 0;
padding: 0;
list-style: none;
li
width: 350px;
height: 160px;
border: 20px solid #ccc;
margin-top: 20px;
li:nth-child(1)
/*border-image: url("images/border.jpg") 167/20px round;*/
border-image-source: url("images/border.jpg");
border-image-slice: 167 167 167 167;
border-image-width: 20px;
/*环绕 是完整的使用切割后的图片进行平铺*/
border-image-repeat: round;
li:nth-child(2)
/*平铺 从边框的中心向两侧开始平铺 会出现不完整的图片*/
border-image: url("images/border.jpg") 167/20px repeat;
li:nth-child(3)
/*默认的平铺方式*/
border-image: url("images/border.jpg") 167/20px stretch;
</style>
</head>
<body>
<ul>
<li></li>
<li></li>
<li></li>
</ul>
</body>
</html>
📣注意:小伙伴们请注意了,border-image-slice: 167 167 167 167;中的值服从上右下左的顺序,且不带单位哦❗❗❗
🥇 九、公用面板样式
因为所有的面板的基础样式是一致的,提前写好一个公用的面板类。
面板 .panel
- 容器 .inner 内边距是 上下24px 左右 36px
代码示例:
/* 公共面板样式 */
.panel
position: relative;
border: 15px solid transparent;
border-width: .6375rem .475rem .25rem 1.65rem;
border-image-source: url(../images/border.png);
border-image-slice: 51 38 20 132;
margin-bottom: .25rem;
.inner
position: absolute;
top: -0.6375rem;
left: -1.65rem;
right: -0.475rem;
bottom: -0.25rem;
padding: .3rem .45rem;
.panel h3
font-size: 0.25rem;
color: #fff;
font-weight: 400;
🥇 十、概览区域(overview)-布局
🥈 10.1 html结构
代码示例:
<div class="overview panel">
<div class="inner">
<ul>
<li>
<h4>2,190</h4>
<span>
<i class="icon-dot" style="color: #006cff"></i>
设备总数
</span>
</li>
<li class="item">
<h4>190</h4>
<span>
<i class="icon-dot" style="color: #6acca3"></i>
季度新增
</span>
</li>
<li>
<h4>3,001</h4>
<span>
<i class="icon-dot" style="color: #6acca3"></i>
运营设备
</span>
</li>
<li>
<h4>108</h4>
<span>
<i class="icon-dot" style="color: #ed3f35"></i>
异常设备
</span>
</li>
</ul>
</div>
</div>
🥈 10.2 css样式
样式描述:
- 容器高度 110px
- h4字体 28px #fff 左边距 4.8px 下间隙 8px
- span字体 16px #4c9bfd
代码示例:
/* 概览区域 */
.overview
height: 1.375rem;
.overview ul
display: flex;
justify-content: space-between;
21款酷炫的数据可视化工具,拿走不谢!