当前位置:   article > 正文

数据可视化,使用Echarts生成柱状图,折线图,饼图_制作echart折线图成绩

制作echart折线图成绩

目录

ECharts的快速上手

步骤1:引入 echarts.js 文件

步骤2:准备一个呈现图表的盒子

步骤3:初始化 echarts 实例对象

步骤4:准备配置项

步骤5:将配置项设置给 echarts 实例对象

示例代码:

相关配置讲解:

效果展示:

 1.柱状图

常见效果:

标记:

显示:

横向柱状图:

柱状图示例代码:

效果展示:

通用配置:

标题: title

提示框: tooltip

工具按钮: toolbox

图例: legend

 折线图:

折线图的常见效果:

标记

线条控制

填充风格 areaStyle

紧挨边缘 boundaryGap

缩放,脱离0值比例

堆叠图

饼图

示例代码

 饼图的常见效果:

显示数值

选中效果

圆环

南丁格尔图:


ECharts的快速上手

步骤1:引入 echarts.js 文件

echarts是一个 js 的库,当然得先引入这个库文件

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

步骤2:准备一个呈现图表的盒子

这个盒子通常来说就是我们熟悉的 div ,这个 div 决定了图表显示在哪里

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

步骤3:初始化 echarts 实例对象

在这个步骤中, 需要指明图表最终显示在哪里的DOM元素

var myChart = echarts.init(document.getElementById('main'))

步骤4:准备配置项

这步很关键,我们最终的效果,到底是显示饼图还是折线图,基本上都是由配置项决定的

  1. var option = {
  2. xAxis: {
  3. type: 'category',
  4. data: ['小明', '小红', '小王']
  5. },
  6. yAxis: {
  7. type: 'value'
  8. },
  9. series: [
  10. {
  11. name: '语文',
  12. type: 'bar',
  13. data: [70, 92, 87],
  14. }
  15. ]
  16. }

步骤5:将配置项设置给 echarts 实例对象

myChart.setOption(option)

示例代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. <script src="lib/echarts.min.js"></script>
  9. </head>
  10. <body>
  11. <div style="width: 600px;height:400px"></div>
  12. <script>
  13. var mCharts = echarts.init(document.querySelector('div'))
  14. var option = {
  15. title:{
  16. text: '成绩',
  17. link: 'http://www.baidu.com',
  18. textStyle: {
  19. color: 'red'
  20. }
  21. },
  22. xAxis: {
  23. type: 'category',
  24. data: ['小明','小红','小王']
  25. },
  26. yAxis: {
  27. type: 'value'
  28. },
  29. series: [
  30. {
  31. name: '语文',
  32. type: 'bar',
  33. data: [70, 92, 87]
  34. }
  35. ]
  36. }
  37. mCharts.setOption(option)
  38. </script>
  39. </body>
  40. </html>

相关配置讲解:

  • xAxis:   直角坐标系中的 x 轴, 如果 type 属性的值为 category ,那么需要配置 data 数据, 代表在 x 轴的呈现
  • yAxis:   直角坐标系中的 y 轴, 如果 type 属性配置为 value , 那么无需配置 data , 此时 y 轴会自动去 series 下找数据进行图表的绘制
  • series:  系列列表。每个系列通过 type 决定自己的图表类型, data 来设置每个系列的数据

效果展示:

 1.柱状图

常见效果:

标记:

  • 最大值\最小值 markPoint
    1. series: [
    2. {
    3. ......
    4. markPoint: {
    5. data: [
    6. {
    7. type: 'max', name: '最大值'
    8. },
    9. {
    10. type: 'min', name: '最小值'
    11. }
    12. ]
    13. }
    14. }
    15. ]
  • 平均值 markLine
  1. series: [
  2. {
  3. ......
  4. markLine: {
  5. data: [
  6. {
  7. type: 'average', name: '平均值'
  8. }
  9. ]
  10. }
  11. }
  12. ]

显示:

  • 数值显示 label
    1. series: [
    2. {
    3. ......
    4. label: {
    5. show: true, // 是否可见
    6. rotate: 60 // 旋转角度
    7. }
    8. }
    9. ]
  • 柱宽度 barWidth
    1. series: [
    2. {
    3. ......
    4. barWidth: '30%' // 柱的宽度
    5. }
    6. ]

横向柱状图:

  • 所谓的横向柱状图, 只需要让x轴的角色和y轴的角色互换一下即可. 既 xAxis 的 type 设置为 value , yAxis 的 type 设置为 category , 并且设置 data 即可
    1. var option = {
    2. xAxis: {
    3. type: 'value'
    4. },
    5. yAxis: {
    6. type: 'category',
    7. data: xDataArr
    8. },
    9. series: [
    10. {
    11. type: 'bar',
    12. data: yDataArr
    13. }
    14. ]
    15. }

    柱状图示例代码:

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Document</title>
    8. <script src="./lib/echarts.min.js"></script>
    9. </head>
    10. <body>
    11. <div style="width: 600px; height: 400px"></div>
    12. <script>
    13. var mCharts = echarts.init(document.querySelector('div'))
    14. var xDataArr = ['张三', '李四', '王五', '闰土', '小明', '茅台', '二妞', '大强']
    15. var yDataArr = [88, 92, 77, 63, 33, 50, 91,96]
    16. var option = {
    17. xAxis: {
    18. type: 'category',
    19. data: xDataArr
    20. },
    21. yAxis: {
    22. type: 'value'
    23. },
    24. series: [
    25. {
    26. name: '语文',
    27. type: 'bar',
    28. markPoint:{
    29. data: [
    30. {
    31. type: 'max', name: '最大值'
    32. },{
    33. type: 'min', name: '最小值'
    34. }
    35. ]
    36. },
    37. markLine:{
    38. data: [
    39. {
    40. type: 'average', name:'平均值'
    41. }
    42. ]
    43. },
    44. label:{
    45. show: true,
    46. position: 'top',
    47. color: 'black'
    48. },
    49. barWidth:'80%',
    50. data: yDataArr
    51. }
    52. ]
    53. }
    54. mCharts.setOption(option)
    55. </script>
    56. </body>
    57. </html>

    效果展示:

通用配置:

  • 标题: title

  1. var option = {
  2. title: {
  3. text: "成绩", // 标题文字
  4. textStyle: {
  5. color: 'red' // 文字颜色
  6. },
  7. borderWidth: 5, // 标题边框
  8. borderColor: 'green', // 标题边框颜色
  9. borderRadius: 5, // 标题边框圆角
  10. left: 20, // 标题的位置
  11. top: 20 // 标题的位置
  12. }
  13. }

  • 提示框: tooltip

        tooltip 指的是当鼠标移入到图表或者点击图表时, 展示出的提示框

        触发类型: trigger

                可选值有item\axis

        触发时机: triggerOn

                可选值有 mouseOver\click

        格式化显示: formatter           

                可选值有 字符串模板 / 回调函数

                1.字符串模板

  1. var option = {
  2. tooltip: {
  3. trigger: 'item',
  4. triggerOn: 'click',
  5. formatter: '{b}:{c}'
  6. }
  7. }
  8. // 这个{b} 和 {c} 所代表的含义不需要去记, 在官方文档中有详细的描述

                2.回调函数:

  1. var option = {
  2. tooltip: {
  3. trigger: 'item',
  4. triggerOn: 'click',
  5. formatter: function (arg) {
  6. return arg.name + ':' + arg.data
  7. }
  8. }
  9. }

 

  • 工具按钮: toolbox

toolbox 是 ECharts 提供的工具栏, 内置有 导出图片,数据视图, 重置, 数据区域缩放, 动态类型切 换五个工具 工具栏的按钮是配置在 feature 的节点之下

  1. var option = {
  2. toolbox: {
  3. feature: {
  4. saveAsImage: {}, // 将图表保存为图片
  5. dataView: {}, // 是否显示出原始数据
  6. restore: {}, // 还原图表
  7. dataZoom: {}, // 数据缩放
  8. magicType: { // 将图表在不同类型之间切换,图表的转换需要数据的支持
  9. type: ['bar', 'line']
  10. }
  11. }
  12. }
  13. }

  • 图例: legend

legend 是图例,用于筛选类别,需要和 series 配合使用

  • legend 中的 data 是一个数组
  • legend 中的 data 的值需要和 series 数组中某组数据的 name 值一致
  1. var option = {
  2. legend: {
  3. data: ['语文', '数学']
  4. },
  5. xAxis: {
  6. type: 'category',
  7. data: ['张三', '李四', '王五', '闰土', '小明', '茅台', '二妞', '大强']
  8. },
  9. yAxis: {
  10. type: 'value'
  11. },
  12. series: [
  13. {
  14. name: '语文',
  15. type: 'bar',
  16. data: [88, 92, 63, 77, 94, 80, 72, 86]
  17. },
  18. {
  19. name: '数学',
  20. type: 'bar',
  21. data: [93, 60, 61, 82, 95, 70, 71, 86]
  22. }
  23. ]
  24. }

 

 折线图:

和上述柱状图的实现差不多,只是将series中的type设置为line

示例代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. <script src="lib/echarts.min.js"></script>
  9. </head>
  10. <body>
  11. <div style="width: 600px;height:400px"></div>
  12. <script>
  13. var mCharts = echarts.init(document.querySelector('div'))
  14. var xDataArr = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月','10月', '11月', '12月']
  15. var yDataArr = [3000, 2800, 900, 1000, 800, 700, 1400, 1300, 900, 1000, 800,600]
  16. var option = {
  17. xAxis: {
  18. type: 'category',
  19. data: xDataArr
  20. },
  21. yAxis: {
  22. type: 'value'
  23. },
  24. series: [
  25. {
  26. name: '语文',
  27. type: 'line',
  28. data: yDataArr
  29. }
  30. ]
  31. }
  32. mCharts.setOption(option)
  33. </script>
  34. </body>
  35. </html>

效果展示:

折线图的常见效果:

标记

  • 最大值/最小值 markPoint
  1. var option = {
  2. series: [
  3. {
  4. ......
  5. markPoint: {
  6. 平均值 markLine
  7. data: [
  8. {
  9. type: 'max',
  10. name: '最大值'
  11. },
  12. {
  13. type: 'min',
  14. name: '最小值'
  15. }
  16. ]
  17. }
  18. }
  19. ]
  20. }

 

  • 平均值  markLine
  1. var option = {
  2. series: [
  3. {
  4. ......
  5. markLine: {
  6. data: [
  7. {
  8. type: 'average',
  9. name: '平均值'
  10. }
  11. ]
  12. }
  13. }
  14. ]
  15. }

 

  • 标注区间 markArea
  1. var option = {
  2. series: [
  3. {
  4. ......
  5. markArea: {
  6. data: [
  7. [
  8. {
  9. xAxis: '1月'
  10. },
  11. {
  12. xAxis: '2月'
  13. }
  14. ],
  15. [
  16. {
  17. xAxis: '7月'
  18. },
  19. {
  20. xAxis: '8月'
  21. }
  22. ]
  23. ]
  24. }
  25. }
  26. ]
  27. }

 

线条控制

  • 平滑线条 smooth
  1. var option = {
  2. series: [
  3. {
  4. ......
  5. smooth: true
  6. }
  7. ]
  8. }

 

  • 样式线条 lineStyle
  1. var option = {
  2. series: [
  3. {
  4. ......
  5. smooth: true,
  6. lineStyle: {
  7. color: 'green',
  8. type: 'dashed' // 可选值还有 dotted solid
  9. }
  10. }
  11. ]
  12. }

 

填充风格 areaStyle

  1. var option = {
  2. series: [
  3. {
  4. type: 'line',
  5. data: yDataArr,
  6. areaStyle: {
  7. color: 'pink'
  8. }
  9. }
  10. ]
  11. }

 

紧挨边缘 boundaryGap

boundaryGap 是设置给 x 轴的, 让起点从 x 轴的0坐标开始

  1. var option = {
  2. xAxis: {
  3. type: 'category',
  4. data: xDataArr,
  5. boundaryGap: false
  6. }
  7. }

 

缩放,脱离0值比例

如果每一组数据之间相差较少, 且都比0大很多, 那么有可能会出现这种情况

  1. var xDataArr = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月','10月', '11月', '12月']
  2. var yDataArr = [3005, 3003, 3001, 3002, 3009, 3007, 3003, 3001, 3005,3004, 3001, 3009] //此时y轴的数据都在3000附近, 每个数之间相差不多
  3. var option = {
  4. xAxis: {
  5. type: 'category',
  6. data: xDataArr
  7. },
  8. yAxis: {
  9. type: 'value'
  10. },
  11. series: [
  12. {
  13. type: 'line',
  14. data: yDataArr
  15. }
  16. ]
  17. }

效果如下图:

 这显然不是我们想要的效果, 因此可以配置上 scale , 让其摆脱0值比例

  • scale配置

scale 应该配置给 y 轴

  1. var option = {
  2. yAxis: {
  3. type: 'value',
  4. scale: true
  5. }
  6. }

堆叠图

 堆叠图指的是, 同个类目轴上系列配置相同的 stack 值后,后一个系列的值会在前一个系列的值上 相加

如果在一个图表中有两个或者多个折线图, 在没有使用堆叠配置的时候, 效果如下:

  1. <script>
  2. var mCharts = echarts.init(document.querySelector("div"))
  3. var xDataArr = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
  4. var yDataArr1 = [120, 132, 101, 134, 90, 230, 210]
  5. var yDataArr2 = [20, 82, 191, 94, 290, 330, 310]
  6. var option = {
  7. xAxis: {
  8. type: 'category',
  9. data: xDataArr
  10. },
  11. yAxis: {
  12. type: 'value',
  13. scale: true
  14. },
  15. series: [
  16. {
  17. type: 'line',
  18. data: yDataArr1
  19. },
  20. {
  21. type: 'line',
  22. data: yDataArr2
  23. }
  24. ]
  25. }
  26. mCharts.setOption(option)
  27. </script>

使用了堆叠图之后

  1. var option = {
  2. series: [
  3. {
  4. type: 'line',
  5. data: yDataArr1,
  6. stack: 'all' // series中的每一个对象配置相同的stack值, 这个all可以任意写
  7. },
  8. {
  9. type: 'line',
  10. data: yDataArr2,
  11. stack: 'all' // series中的每一个对象配置相同的stack值, 这个all可以任意写
  12. }
  13. ]
  14. }

 

 蓝色这条线的y轴起点, 不再是y轴, 而是红色这条线对应的点. 所以相当于蓝色是在红色这条线的基 础之上进行绘制. 基于前一个图表进行堆叠

饼图

  • 饼图的数据是由 name 和 value 组成的字典所形成的数组
  • 饼图无须配置 xAxis 和 yAxis

示例代码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. <script src="./lib/echarts.min.js"></script>
  9. </head>
  10. <body>
  11. <div class='container' style="width:600px; height:400px">
  12. </div>
  13. <script>
  14. var mCharts = echarts.init(document.querySelector('.container'))
  15. var pieData = [
  16. {
  17. value: 11231,
  18. name: "淘宝",
  19. },
  20. {
  21. value: 22673,
  22. name: "京东"
  23. },
  24. {
  25. value: 6123,
  26. name: "唯品会"
  27. },
  28. {
  29. value: 8989,
  30. name: "1号店"
  31. },
  32. {
  33. value: 6700,
  34. name: "聚美优品"
  35. }
  36. ]
  37. option = {
  38. series:{
  39. type:'pie',
  40. data:pieData
  41. }
  42. }
  43. mCharts.setOption(option)
  44. </script>
  45. </body>
  46. </html>

 饼图的常见效果:

  • 显示数值

        label.show : 显示文字

        label.formatter : 格式化文字

  1. var option = {
  2. series: [
  3. {
  4. type: 'pie',
  5. data: pieData,
  6. label: {
  7. show: true,
  8. formatter: function (arg) {
  9. return arg.data.name + '平台' + arg.data.value + '元\n' +
  10. arg.percent + '%'
  11. }
  12. }
  13. }
  14. ]
  15. }

  • 选中效果

selectedMode: 'multiple' :选中模式,表示是否支持多个选中,默认关闭;

支持布尔值和字符串,字符串取值可选 'single' , 'multiple' ,分别表示单选还是多选

selectedOffset: 30 :选中扇区的偏移距离

  1. var option = {
  2. series: [
  3. {
  4. type: 'pie',
  5. data: pieData,
  6. selectedMode: 'multiple',
  7. selectedOffset: 30
  8. }
  9. ]
  10. }

  • 圆环

radius 饼图的半径。

可以为如下类型:

  • number :直接指定外半径值。
  • string :例如, '20%' ,表示外半径为可视区尺寸(容器高宽中 较小一项)的 20% 长度。
  • Array. :数组的第一项是内半径,第二项是外半径, 通过 Array , 可以将饼图设置为圆环图
  1. var option = {
  2. series: [
  3. {
  4. type: 'pie',
  5. data: pieData,
  6. radius: ['50%', '70%']
  7. }
  8. ]
  9. }

  • 南丁格尔图:

 南丁格尔图指的是每一个扇形的半径随着数据的大小而不同, 数值占比越大, 扇形的半径也就越大

roseType:'radius'

  1. var option = {
  2. series: [
  3. {
  4. type: 'pie',
  5. data: pieData,
  6. label: {
  7. show: true,
  8. formatter: function (arg) {
  9. return arg.data.name + '平台' + arg.data.value + '元\n' +arg.percent +
  10. '%'
  11. }
  12. },
  13. roseType: 'radius'
  14. }
  15. ]
  16. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/821979
推荐阅读
相关标签
  

闽ICP备14008679号