数据可视化ECharts的七大常用图表,看完就会用(1)

本文的后半部分:数据可视化ECharts的常用图表,看完就会用(2)

文章目录

数据可视化

什么是数据可视化?

数据可视化, 说白了, 就是把数据以更加直观的方式进行呈现。那什么方式是更加直观的方式呢? 就是图表。常言道, 文不如表, 表不如图, 人们大脑对图的敏感程度要比苍白无力的文字好很多。

通过图表可以很清楚的看到各项数据之间的关系:(下图是Echarts官网的一个例子)
《数据可视化ECharts的七大常用图表,看完就会用(1)》

数据可视化的好处

  • 更直观的展示信息
  • 清晰有效地传达与沟通信息
  • 更容易洞察隐藏在数据中的信息

数据可视化的实现方式

ECharts是百度公司开源的一个使用JavaScript实现的开源可视化库,兼容性强,底层依赖矢量图形库ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表。

ECharts

关于ECharts的使用可以参考官方网站

ECharts的特性

  • 丰富的可视化类型
    提供了常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪表盘,并且支持图与图之间的混搭。
  • 多种数据格式无需转换直接使用
    内置的 dataset 属性(4.0+)支持直接传入包括二维表,key-value 等多种格式的数据源,此外还支持输入 TypedArray 格式的数据。
  • 千万数据的前端展现
    通过增量渲染技术(4.0+),配合各种细致的优化,ECharts 能够展现千万级的数据量。
  • 移动端优化
    针对移动端交互做了细致的优化,例如移动端小屏上适于用手指在坐标系中进行缩放、平移。 PC 端也可以用鼠标在图中进行缩放(用鼠标滚轮)、平移等。
  • 多渲染方案,跨平台使用
    支持以 Canvas、SVG(4.0+)、VML 的形式渲染图表。
  • 深度的交互式数据探索
    提供了 图例、视觉映射、数据区域缩放、tooltip、数据刷选等开箱即用的交互组件,可以对数据进行多维度数据筛取、视图缩放、展示细节等交互操作。
  • 多维数据的支持以及丰富的视觉编码手段
    对于传统的散点图等,传入的数据也可以是多个维度的。
  • 动态数据
    数据的改变驱动图表展现的改变。
  • 绚丽的特效
    针对线数据,点数据等地理数据的可视化提供了吸引眼球的特效。
  • ECharts的社区非常活跃

一个ECharts实例

模板:

<div style="width: 600px;height:400px"></div>
<script>
	var mCharts = echarts.init(document.querySelector("div"))
	var option= { }//待填充
	mCharts.setOption(option)
</script>

《数据可视化ECharts的七大常用图表,看完就会用(1)》

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <!-- 步骤1:引入echarts.js文件 -->
  <script src="https://cdn.jsdelivr.net/npm/echarts@5.3.1/dist/echarts.js"></script>
</head>

<body>
  <!-- 步骤2:准备一个呈现图表的盒子 -->
  <div id="main" style="width: 600px;height: 400px"></div>
  <script> // 步骤3:初始化echarts实例对象 // 参数, dom,决定图表最终呈现的位置 var mCharts = echarts.init(document.getElementById('main')) // 步骤4:准备配置项 var option = {  title: {  text: '第一个 ECharts 实例' }, xAxis: {  type: 'category',//类目轴,适用于离散的类目数据。 data: ['小明', '小红', '小王', '小李', '小张'] }, yAxis: {  type: 'value'//数值轴,适用于连续数据。后边不用再跟数据了,数据在series的data里。 }, series: [ {  name: '语文', type: 'bar', data: [70, 92, 87, 65, 99] } ] } // 步骤5:将配置项设置给echarts实例对象 mCharts.setOption(option) </script>
</body>
</html>

通用配置var option = {}

下面列举了常用的几个通用配置:

一、标题:title

更多配置项可以参考:传送门

title: {  // 标题设置
  text: '成绩展示', // 标题文字
  textStyle: {  // 标题文字样式设置
    color: 'red'
  },
  borderWidth: 5, // 标题边框宽度
  borderColor: 'blue', // 标题边框颜色
  borderRadius: 5, // 标题边框圆角
  left: 50, // 标题距离左边的距离
  top: 10 // 标题距离顶部的距离
}

二、提示:tooltip

更多配置项可以参考:传送门

提示框浮层内容格式器,支持字符串模板回调函数两种形式。
1.字符串模板
模板变量有 {a}, {b},{c},{d},{e},分别表示系列名,数据名,数据值等。 在 trigger 为 ‘axis’ 的时候,会有多个系列的数据,此时可以通过 {a0}, {a1}, {a2} 这种后面加索引的方式表示系列的索引。 不同图表类型下的 {a},{b},{c},{d} 含义不一样。 其中变量{a}, {b}, {c}, {d}在不同图表类型下代表数据含义为:

  • 折线(区域)图、柱状(条形)图、K线图 : {a}(系列名称),{b}(类目值),{c}(数值), {d}(无)
  • 散点图(气泡)图 : {a}(系列名称),{b}(数据名称),{c}(数值数组), {d}(无)
  • 地图 : {a}(系列名称),{b}(区域名称),{c}(合并数值), {d}(无)
  • 饼图、仪表盘、漏斗图: {a}(系列名称),{b}(数据项名称),{c}(数值), {d}(百分比)

2.回调函数

使用示例:

tooltip: {  // 工具提示
  // trigger: 'item' 工具提示的类型 item代表的是每个柱本身, axis代表的是坐标轴
  trigger: 'axis',
  triggerOn: 'click', // 触发时机, click代表点击, mouseOver代表鼠标移过(默认)
  // formatter: '{b} 的成绩是 {c}'
  formatter: function(arg){  // 文字格式化
    return arg[0].name + '的分数是:' + arg[0].data
  }
}

三、工具按钮:toolbox

更多配置项可以参考:传送门

toolbox: {  // 工具箱按钮
  feature: { 
    saveAsImage: { }, // 导出图片
    dataView: { }, // 数据视图
    restore: { }, // 重置
    dataZoom: { }, // 区域缩放
    magicType: { 
      type: ['bar', 'line']
    } // 动态图表类型的切换
  }
}

右上角的工具框即为toolbox的效果:
《数据可视化ECharts的七大常用图表,看完就会用(1)》

四、图例:legend

更多配置项可以参考:传送门
legend是图例,用于筛选类别,需要和series配合使用:

  • legend中的data是一个数组
  • legend中的data的值需要和series数组中某组数据的name值一致
legend: {  
// 图例, 图例中的data数据来源于series中每个对象的name, 图例可以帮助我们对图表进行筛选
  data: ['语文', '数学']
},
xAxis: { 
  type: 'category',
  data: xDataArr
},
yAxis: { 
  type: 'value'
},
series: [
  { 
    name: '语文',
    type: 'bar',
    data: yDataArr1
  },
  { 
    name: '数学',
    type: 'bar',
    data: yDataArr2
  }
]

当点击按钮”语文”时下边就会只显示数学项。
《数据可视化ECharts的七大常用图表,看完就会用(1)》

ECharts七大常用图表

柱状图、折线图、散点图、饼图、地图、雷达图、仪表盘图

直角坐标系下的三大图

一、柱状图

柱状图:准备option, 将series中的type的值设置为: bar

坐标轴xAxis或者yAxis中的配置:type的值主要有两种: category和value, 如果type属性的值为category,那么需要配置data数据, 代表在x轴的呈现. 如果type属性配置为value,那么无需配置data, 此时y轴会自动去series下找数据进行图表的绘制。

横向柱状图:只需要让x轴的角色和y轴的角色互换一下即可. 既xAxis的type设置为value, yAxis的type设置为category, 并且设置data即可。

柱状图特点:柱状图描述的是分类数据,呈现的是每一个分类中『有多少?』, 图表所表达出来的含义在于不同类别数据的排名\对比情况

<body>
  <div style="width: 600px;height:400px"></div>
  <script> var mCharts = echarts.init(document.querySelector("div")) // 初始化echarts实例对象 var xDataArr = ['张三', '李四', '王五', '闰土', '小明', '茅台', '二妞', '大强'] // 准备x轴数据 var yDataArr = [88, 92, 63, 77, 94, 80, 72, 86] // 为x轴每一个元素指明数据 var option = {  yAxis: {  type: 'value' }, xAxis: {  type: 'category', data: xDataArr }, series: [ {  name: '语文', type: 'bar', markPoint: {  // 标记点 data: [ {  type: 'max', name: '最大值' },{  type: 'min', name: '最小值' } ] }, markLine: {  // 标记线 data: [ {  type: 'average', name: '平均值' } ] }, label: {  // 柱状图上的文字设置 show: true, // 是否显示 rotate: 60, // 旋转角度 position: 'top' // 显示位置 }, barWidth: '30%', // 柱的宽度 data: yDataArr } ] } mCharts.setOption(option) </script>
</body>

《数据可视化ECharts的七大常用图表,看完就会用(1)》

二、折线图

折线图:准备option, 将series中的type的值设置为: line
特点:折线图更多的使用来呈现数据随时间的『变化趋势
常见效果:它的用法和柱状图类似,也有最大值\最小值markPoint、平均值markLine……
这里展示几个:标注区间markArea、线条控制(平滑线条smooth、线条样式lineStyle)、填充风格areaStyle、紧挨边缘boundaryGap、缩放, 脱离0值比例scale

xAxis: { 
 type: 'category',
  data: xDataArr,
  boundaryGap: false // 紧挨边缘:x轴的第1个元素是否与y轴有距离
},
yAxis: { 
  type: 'value',
  scale: true // 缩放:脱离0值比例,设为true则使y值无需从0开始
},
series: [
 { 
    name: '销量',
    data: yDataArr,
    type: 'line',
    markArea: {  // 标记区域
      data: [
        [//起始
          { 
            xAxis: '1月'
          },
          { 
            xAxis: '2月'
          }
        ],
        [
          { 
            xAxis: '7月'
          },
          { 
            xAxis: '8月'
          }
        ]
      ]
    },
    smooth: true, // 是否为平滑线
    lineStyle: {  // 线的样式设置
      color: 'green',
      type: 'solid' // dashed dotted solid
    },
    areaStyle: {  // 线和x轴形成的区域设置
      color: 'pink'
    }
  }
]

《数据可视化ECharts的七大常用图表,看完就会用(1)》
堆叠图:堆叠图指的是, 同个类目轴上系列配置相同的stack值后,后一个系列的值会在前一个系列的值上相加;折线图的series里需要配置两个对象。

series: [
  { 
    type: 'line',
    data: yDataArr,
    stack: 'all', // 堆叠图的设置
    areaStyle: { }
  },
  { 
    type: 'line',
    data: yDataArr2,
    stack: 'all', // 堆叠图的设置,与上边相同就行,名字无所谓
    areaStyle: { }
  }
]

《数据可视化ECharts的七大常用图表,看完就会用(1)》

三、散点图

散点图:准备option, 将series中的type的值设置为: scatter。

特点:散点图可以帮助我们推断出不同维度数据之间的相关性, 比如下面例子中,看得出身高和体重是正相关, 身高越高, 体重越重;散点图也经常用在地图的标注上

常见效果:气泡图效果要能够达到气泡图的效果, 其实就是让每一个散点的大小不同, 让每一个散点的颜色不同symbolSize控制散点的大小itemStyle.color控制散点的颜色。这两个配置项都支持固定值的写法, 也支持回调函数的写法。

var option = { 
 xAxis: { 
   type: 'value',
   scale: true
 },
 yAxis: { 
   type: 'value',
   scale: true
 },
 series: [
   { 
     type: 'scatter',
     data: axisData,
     // symbolSize: 30
     symbolSize: function (arg) {  // 控制散点的大小
       // console.log(arg)
       var height = arg[0] / 100
       var weight = arg[1]
       // bmi = 体重kg / (身高m*身高m) 大于28,就代表肥胖
       var bmi = weight / (height * height)
       if (bmi > 28) { 
         return 20
       }
       return 5
     },
     itemStyle: {  // 控制散点的样式
       color: function (arg) { 
         // console.log(arg)
         var height = arg.data[0] / 100
         var weight = arg.data[1]
         // bmi = 体重kg / (身高m*身高m) 大于28,就代表肥胖
         var bmi = weight / (height * height)
         if (bmi > 28) { 
           return 'red'
         }
         return 'green'
       }
     }
   }
 ]
}

涟漪动画效果:将type的值从scatter设置为effectScatter就能够产生涟漪动画的效果。

type: 'effectScatter', // 指明图表为带涟漪动画的散点图
showEffectOn: 'emphasis', // 出现涟漪动画的时机 render emphasis
rippleEffect: { 
  scale: 10 // 涟漪动画时, 散点的缩放比例
},

《数据可视化ECharts的七大常用图表,看完就会用(1)》

直角坐标系的常见配置

直角坐标系的图表指的是带有x轴和y轴的图表, 常见的直角坐标系的图表有:
柱状图、折线图、散点图
针对于直角坐标系的图表, 有一些通用的配置:(都在option下)

配置1: 网格grid

grid是用来控制直角坐标系的布局和大小, x轴和y轴就是在grid的基础上进行绘制的。

var option = { 
	grid: {  // 坐标轴容器
	  show: true, // 是否可见
	  borderWidth: 10, // 边框的宽度
	  borderColor: 'red', // 边框的颜色
	  left: 120, // 边框的位置
	  top: 120,
	  width: 300, // 边框的大小
	  height: 150
	},
	……
}
配置2: 坐标轴axis

坐标轴分为x轴和y轴, 一个grid中最多有两种位置的x轴和y轴。
坐标轴类型type:

  • value: 数值轴, 自动会从目标数据中读取数据
  • category: 类目轴, 该类型必须通过data设置类目数据

坐标轴位置:

  • xAxis: 可取值为top或者bottom
  • yAxis: 可取值为left或者right
xAxis: { 
  type: 'category',
  data: [1,123,4,5,6],
  position: 'top' // 控制坐标轴的位置
},
yAxis: { 
  type: 'value',
  position: 'right' // 控制坐标轴的位置
}
配置3: 区域缩放dataZoom

dataZoom用于区域缩放, 对数据范围过滤, x轴和y轴都可以拥有, dataZoom是一个数组, 意味着可以配置多个区域缩放器。
区域缩放类型type:

  • slider: 滑块
  • inside: 内置, 依靠鼠标滚轮或者双指缩放

产生作用的轴:

  • xAxisIndex:设置缩放组件控制的是哪个x轴, 一般写0即可
  • yAxisIndex:设置缩放组件控制的是哪个y轴, 一般写0即可

指明初始状态的缩放情况:

  • start: 数据窗口范围的起始百分比
  • end: 数据窗口范围的结束百分比
dataZoom: [ // 控制区域缩放效果的实现
  { 
    type: 'slider', // 缩放的类型 slide代表滑块 inside代表依靠鼠标滚轮
    // type: 'inside'
    xAxisIndex: 0 // 作用于第0个x轴
  },
  { //若y轴不要缩放则把这块删了
    type: 'slider',
    yAxisIndex: 0,// 作用于第0个y轴
    start: 0, // 渲染完成后, 数据筛选的初始值, 百分比
    end: 80 // 渲染完成后, 数据筛选的结束值, 百分比
  }
]

《数据可视化ECharts的七大常用图表,看完就会用(1)》

之前还有个工具按钮也可以实现简单的区域缩放:

toolbox: { 
  feature: { 
    dataZoom: { }
  }
}
    原文作者:若年封尘
    原文地址: https://blog.csdn.net/zag666/article/details/123807546
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞