ECharts基础

时间:2024-11-18 09:52:07

一、介绍

ECharts是一个基于 JavaScript 的开源可视化图表库,能够比较方便的构建柱状图、饼图、折线图等,用于数据可视化的展示。

二、基本认识

1.引入echarts的js文件,然后就可以获取一个名为echarts的对象,如

<script src="/ajax/libs/echarts/5.1.2/"></script>

2.准备一个设置宽高的容器。

<div style="width: 600px; height: 400px;"></div>

3.使用echarts对象的init()方法,传递容器DOM对象,获得echarts实例。

let myEchart = echarts.init(document.querySelector('div'))

实例调用setOption()方法,传入配置对象进行图表的绘制。

  1. <!-- 容器 -->
  2. <div style="width: 600px; height: 400px;"></div>
  3. <script>
  4. console.log(echarts);
  5. let myEchart = echarts.init(document.querySelector('div'))
  6. myEchart.setOption({
  7. // 标题配置
  8. title:{
  9. text:'数据可视化',
  10. textStyle:{
  11. color:'red'
  12. },
  13. left:'center'
  14. },
  15. // x轴
  16. xAxis:{
  17. data:['电脑','手机','平板','固定电话']
  18. },
  19. yAxis:{},
  20. series:{
  21. type:'bar',
  22. data:[10,20,30,40]
  23. }
  24. })
  25. </script>

三、基本使用

1.多个容器展示多个图表

只需要设置多个容器即可。

2.一个容器展示多个图表

在series配置项中配置多个类型的图表即可实现。

其中饼图的一些参数:

center:设置饼图中心的位置,可以设置数字或百分比(字符串)

radius:设置内外半径

width:设置饼图的宽度

left:设置饼图距离容器的左侧的距离

  1. <div style="width: 600px; height: 500px;" class="box"></div>
  2. <script>
  3. const box = document.querySelector('.box')
  4. const myEchart = echarts.init(box)
  5. myEchart.setOption({
  6. title: {
  7. text: '一个容器展示多个图表',
  8. left: 'center',
  9. textStyle: { color: 'red' }
  10. },
  11. xAxis: {
  12. data: ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸']
  13. },
  14. yAxis: {},
  15. series: [
  16. {
  17. type: 'pie',
  18. // 饼图中心坐标
  19. center: ['80%', '15%'],
  20. // 第一个参数是内半径,第二个是外半径
  21. radius: [0,'10%'],
  22. data: [
  23. { name: '甲', value: 12 },
  24. { name: '乙', value: 35 },
  25. { name: '丙', value: 20 },
  26. { name: '丁', value: 13 },
  27. { name: '戊', value: 20 },
  28. ],
  29. // 饼图距离容器左侧的距离
  30. left:100,
  31. // 饼图的宽度
  32. width:400
  33. },
  34. {
  35. type: 'bar',
  36. data: [10, 20, 40, 5, 30, 10, 25, 65, 80, 40],
  37. },
  38. {
  39. type: 'line',
  40. data: [2, 10, 36, 20, 95, 43, 25, 65, 75, 12],
  41. }
  42. ]
  43. })
  44. </script>

 3.使用dataset数据集展示上一个例子

dataset是echarts4.0新增的属性,用于将多个图表的数据放置在一个dataset中,进行统一管理,方便复用。使用时,使用配置项进行配置。

  1. <div style="width: 600px; height: 500px;" class="box"></div>
  2. <script>
  3. const box = document.querySelector('.box')
  4. const myEchart = echarts.init(box)
  5. myEchart.setOption({
  6. title: {
  7. text: '一个容器展示多个图表',
  8. left: 'center',
  9. textStyle: { color: 'red' }
  10. },
  11. // 设置字符集,让多个图形的数据存放在一起
  12. dataset: {
  13. source: [
  14. ['甲', 10, 2, '甲', 12],
  15. ['乙', 20, 10, '乙', 35],
  16. ['丙', 40, 36, '丙', 20],
  17. ['丁', 5, 20, '丁', 13],
  18. ['戊', 30, 95, '戊', 20],
  19. ['己', 10, 43],
  20. ['庚', 25, 25],
  21. ['辛', 65, 65],
  22. ['壬', 80, 75],
  23. ['癸', 40, 12],
  24. ]
  25. },
  26. xAxis: {
  27. // data: ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸']
  28. // 设置type,则自动取第一维度的数据
  29. type:'category'
  30. },
  31. yAxis: {},
  32. series: [
  33. {
  34. type: 'pie',
  35. // 饼图中心坐标
  36. center: ['80%', '15%'],
  37. // 第一个参数是内半径,第二个是外半径
  38. radius: [0, '10%'],
  39. // data: [
  40. // { name: '甲', value: 12 },
  41. // { name: '乙', value: 35 },
  42. // { name: '丙', value: 20 },
  43. // { name: '丁', value: 13 },
  44. // { name: '戊', value: 20 },
  45. // ],
  46. // 使用dataset
  47. encode:{
  48. // 第二维度映射饼图的名字
  49. itemName:3,
  50. // 第四维度映射饼图的值
  51. value:4
  52. },
  53. // 饼图距离容器左侧的距离
  54. left: 100,
  55. // 饼图的宽度
  56. width: 400
  57. },
  58. {
  59. type: 'bar',
  60. // data: [10, 20, 40, 5, 30, 10, 25, 65, 80, 40],
  61. // 使用dataset
  62. encode: {
  63. // 第二例映射到y轴
  64. y: 1
  65. },
  66. },
  67. {
  68. type: 'line',
  69. // data: [2, 10, 36, 20, 95, 43, 25, 65, 75, 12],
  70. encode: {
  71. // 第三例映射到y轴
  72. y: 2
  73. },
  74. }
  75. ]
  76. })
  77. </script>

内置组件的使用

echarts内置组件作为配置项进行配置使用。

tooltip:提示框组件;toolbox:工具栏组件;

legend:图例组件(切换不同类型的图形展示,如折线图与柱状图);

dataZoom:区域缩放组件;visualMap:视觉映射组件;

  1. <div style="width: 800px; height: 500px;"></div>
  2. <script>
  3. let dom = document.querySelector('div')
  4. echarts.init(dom).setOption({
  5. title: {
  6. text: 'echarts组件',
  7. left: 'center',
  8. textStyle: { color: 'red' }
  9. },
  10. xAxis: {
  11. data: ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸']
  12. },
  13. yAxis: {},
  14. series: [
  15. { type: 'bar', data: [10, 20, 30, 40, 20, 15, 36, 65, 45, 12], color: 'red', name: 'bar' },
  16. { type: 'line', data: [20, 10, 30, 10, 5, 94, 52, 61, 35, 12], color: 'green', name: 'line' }
  17. ],
  18. // 提示框组件
  19. tooltip: {
  20. textStyle: {
  21. // 提示框文字颜色
  22. color: '#000'
  23. }
  24. },
  25. // 图例组件
  26. legend: {
  27. left: '70%'
  28. },
  29. // 工具栏组件
  30. toolbox: {
  31. show: true,
  32. top: 25,
  33. left: '70%',
  34. feature: {
  35. dataZoom: {
  36. yAxisIndex: "none"
  37. },
  38. dataView: {
  39. readOnly: false
  40. },
  41. magicType: {
  42. type: ["line", "bar"]
  43. },
  44. restore: {},
  45. saveAsImage: {},
  46. },
  47. iconStyle: { color: 'cyan' }
  48. },
  49. // 区域缩放组件
  50. dataZoom: {
  51. type: 'slider'
  52. },
  53. // 视觉映射组件
  54. visualMap: {
  55. left: '90%',
  56. top: 200,
  57. type: 'continuous',
  58. min:10,
  59. max:150,
  60. text:['高','低'],
  61. color: ['red', 'orange', 'yellow']
  62. }
  63. })
  64. </script>

 5.多个坐标轴-两个y轴

将yAxis配置向设置为数组格式,在series中使用yAxisIndex单独指定坐标轴。

  1. <div style="width: 500px; height: 400px;"></div>
  2. <script>
  3. echarts.init(document.querySelector('div')).setOption({
  4. title: {
  5. text: '双坐标体系-双y轴',
  6. left: 'center'
  7. },
  8. xAxis: {
  9. data: ['天', '地', '玄', '黄']
  10. },
  11. yAxis: [
  12. {
  13. // 显示坐标轴轴线
  14. axisLine:{show:true},
  15. // 显示y轴刻度点(不是数字)
  16. axisTick: {show:true}
  17. },
  18. {
  19. // 显示坐标轴轴线
  20. axisLine:{show:true},
  21. // 显示y轴刻度
  22. axisTick: {show:true}
  23. }
  24. ],
  25. series: [
  26. {
  27. type: 'bar',
  28. data: [10, 25, 15, 30],
  29. // 指定柱状图使用哪个坐标轴
  30. yAxisIndex:0
  31. },
  32. {
  33. type: 'line',
  34. data: [51, 65, 35, 84],
  35. // 指定折线图使用哪个坐标轴
  36. yAxisIndex:1
  37. }
  38. ]
  39. })
  40. </script>