ECharts的使用¶
你可以一无所有,但绝不能一无是处
Author: zhangjunchang
1.ECharts的基本使用¶
1.1.ECharts的介绍¶
ECharts是百度公司开源的一个使用 JavaScript 实现的开源可视化库,兼容性强,底层依赖矢量图形库 ZRender ,提供直观,交互丰富,可高度个性化定制的数据可视化图表。
开源免费
- 它是开源免费的,也就是我们可以免费的使用 ECharts ,不需要缴纳任何的费用
功能丰富
- 它的功能非常的丰富,提供了各种各样的图表,支持各种各样的定制, 满足各种需求,比如折线图、柱状图、饼图、K线图等. 在他的官方示例中, 提供了上百种图表, 可以用 只有你想不到, 没有她做不到 这句话来形容
社区活跃
- ECharts 的社区非常活跃,意味着你可以和很多开发者讨论,遇到了 ECharts 中不会的问题,也很容易找到解决办法
多种数据的支持
- 可视化的含义就是将数据通过更加直观的图表的方式来呈现。图表只是一种呈现方式。最核心的其 实是数据。 ECharts 对数据格式的支持也是非常友好的。 ECharts 能够支持常见的 key-value 数据格式,还能支持二维表,或者 TypedArray 格式的数据
流数据的支持
对于超大的数据量而言, 数据本身的体量可能就非常消耗资源, 而 ECharts 可以支持对流数据的 动态渲染,加载多少数据就渲染多少数据,省去了漫长的数据加载的等待时间, 他还提供了增量渲 染的技术, 只渲染变化的数据, 提高系统的资源利用. 移动端的优化
跨平台
酷炫的特效
数据的三维可视化
......
ECharts 能够做出各种各样漂亮的图表,它能满足绝大多数可视化图表的实现 . 它的兼容性强 , 使用方便 ,功能强大 , 是实现数据可视化的最佳选择之一 , 更多特点和介绍可以查阅官网地址: https://echarts.apache.org/zh/index.html
1.2.ECharts的快速上手¶
ECharts 的入门使用特别简单, 5分钟就能够上手. 他大体分为这几个步骤
步骤1:引入 echarts.js 文件
echarts是一个 js 的库,当然得先引入这个库文件
步骤2:准备一个呈现图表的盒子
这个盒子通常来说就是我们熟悉的 div ,这个 div 决定了图表显示在哪里
步骤3:初始化 echarts 实例对象
在这个步骤中, 需要指明图表最终显示在哪里的DOM元素
步骤4:准备配置项
这步很关键,我们最终的效果,到底是显示饼图还是折线图,基本上都是由配置项决定的
// 大标题
title: {
text: '收费账单',
// 这个有一个副标题我不需要删除了
left: 'center'
},
// 提示框
tooltip: {
trigger: 'item'
},
// 图例
legend: {
orient: 'vertical',
left: 'left'
},
series: [
{
name: '消费账单',
type: 'pie',
radius: '50%', // 圆的半径
// 数据
data: [
],
// 显示效果
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
骤5:将配置项设置给 echarts 实例对象
ECharts 能够做出各种各样漂亮的图表,它能满足绝大多数可视化图表的实现.它的兼容性强, 使用方便, 功能强大, 是实现数据可视化的最佳选择之一, 更多特点和介绍可以查阅官网地址:
通过简单的 5 个步骤 , 就能够把一个简单的柱状图给显示在网页中了 . 这几个步骤中 , 步骤 4 最重要 , 一个图表最终呈现什么样子 , 完全取决于这个配置项 . 所以对于不同的图表 , 除了 配置项会发生改变 之外 ,其他的代码 都是 固定不变 的 .
1.3.ECharts的在项目中异步渲染¶
我们实例化一个饼图后,要想让它实时变化需要在请求中实现异步渲染。我们在更新数据的函数中感谢myChart中的data就可以了
饼图渲染
- 初始化一个饼图 echarts mounted钩子实现
- 根据数据实时更新饼图 echarts.setOption({...})
官方提供如下
- 入门示例中的数据是在初始化后
setOption
中直接填入的,但是很多时候可能数据需要异步加载后再填入。ECharts
中实现异步数据的更新非常简单,在图表初始化后不管任何时候只要通过 jQuery 等工具异步获取数据后通过setOption
填入数据和配置项就行
我使用的不是jQuery获取数据而是axios示例如下
async getList() {
const res = await axios.get('https://applet-base-api-t.itheima.net/bill', {
params: {
creator: '闲之'
}
})
// console.log(res)
this.list = res.data.data
// 更新图表
this.myChart.setOption({
series: [
{
data: this.list.map(item => ({ value: item.price, name: item.name }))
}
]
})
}
需要注意的是,它无法操作其他钩子中的内容,这就需要我们把表格挂载到this上。示例如下
mounted() {
this.myChart = echarts.init(document.querySelector('#main'))
this.myChart.setOption({
// 大标题
title: {
text: '收费账单',
left: 'center'
},
// 提示框
tooltip: {
trigger: 'item'
},
// 图例
legend: {
orient: 'vertical',
left: 'left'
},
series: [
{
name: '消费账单',
type: 'pie',
radius: '50%', // 圆的半径
// 数据
data: [
],
// 显示效果
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
})
}