数据可视化 -- ECharts 入门

文章目录

  • 引言
  • 1. ECharts的基本使用
    • 1.1 ECharts的快速上手
    • 1.2 相关配置讲解
  • 2. ECharts常用图表
    • 2.1 图表1 柱状图
      • 2.1.1 柱状图的实现步骤
      • 2.1.2 柱状图的常见效果
      • 2.1.3 柱状图特点
      • 2.1.4 通用配置
    • 2.2 图表2 折线图
      • 2.2.1 折线图的实现步骤
      • 2.2.2 折线图的常见效果
      • 2.2.3 折线图的特点
    • 2.3 图表3 散点图
      • 2.3.1 散点图的实现步骤
      • 2.3.2 散点图的常见效果
      • 2.3.3 散点图的特点
      • 2.3.4 直角坐标系的常见配置
    • 2.4 .图表4 饼图
      • 2.4.1 饼图的实现步骤
      • 2.4.2 饼图的常见效果
      • 2.4.3 饼图的特点
    • 2.5 图表5 地图
      • 2.5.1 地图图表的使用方式
      • 2.5.2 矢量地图的实现步骤
      • 2.5.3 地图的常见配置
      • 2.5.4 地图的常见效果
    • 2.6 图表6 雷达图
      • 2.6.1 雷达图的常见效果
  • 3. 配置项小结
    • 3.1 柱状图 bar
    • 3.2 折线图 line
    • 3.3 散点图 scatter
    • 3.4 饼图 pie
    • 3.5 地图 map
    • 3.6 雷达图 radar
    • 3.7 直角坐标系配置
    • 3.8 通用配置

引言

数据可视化, 说白了, 就是把数据以更加直观的方式进行呈现. 那什么方式是更加直观的方式呢? 就是图表。

什么是ECharts?
ECharts(全称“EchoCharts”)是一个开源的、纯JavaScript实现的图表库,由百度前端团队(EFE)以及社区贡献者共同维护和开发。它提供了一整套丰富的图表类型,包括折线图、柱状图、饼图、雷达图、散点图、地图、热力图、箱线图等,用于各种数据可视化需求。

1. ECharts的基本使用

1.1 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:准备配置项
    这步很关键,我们最终的效果,到底是显示饼图还是折线图,基本上都是由配置项决定的
var option = { xAxis: { type: 'category', data: ['小明', '小红', '小王'] },yAxis: { type: 'value' },series: [ { name: '语文', type: 'bar', data: [70, 92, 87], } ] 
}
  • 步骤5:将配置项设置给 echarts 实例对象
myChart.setOption(option)

一个图表最终呈现什么样子,完全取决于这个配置项.所以对于不同的图表, 除了配置项会发生改变之外,其他的代码都是固定不变的

1.2 相关配置讲解

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

配置项都是以键值对的形式存在, 并且配置项有很多, ECharts 的学习大多是针对于这些配置项的, 对于配置项的学习, 大家可以不用死记硬背, 需要的时候查一查官方文档即可. 网址:https://echarts.apache.org/zh/option.html

2. ECharts常用图表

2.1 图表1 柱状图

2.1.1 柱状图的实现步骤

  • 步骤1 ECharts 最基本的代码结构
<!DOCTYPE html>
<html lang="en"><head><script src="js/echarts.min.js"></script></head><body><div style="width: 600px;height:400px"></div><script>var mCharts = echarts.init(document.querySelector("div")) var option = {}mCharts.setOption(option)</script></body>
</html>

此时 option 是一个空空如也的对象

  • 步骤2 准备x轴的数据
var xDataArr = ['张三', '李四', '王五', '闰土', '小明', '茅台', '二妞', '大强']
  • 步骤3 准备 y 轴的数据
var yDataArr = [88, 92, 63, 77, 94, 80, 72, 86]
  • 步骤4 准备 option , 将 series 中的 type 的值设置为: bar
var option = { xAxis: { type: 'category', data: xDataArr },yAxis: { type: 'value' },series: [ { type: 'bar', data:yDataArr } ] 
}

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

最终的效果如下图:
在这里插入图片描述

2.1.2 柱状图的常见效果

  • 标记:
    • 最大值\最小值 markPoint
series: [ { ...... markPoint: { data: [ { type: 'max', name: '最大值' },{ type: 'min', name: '最小值' } ] } } 
]

在这里插入图片描述

    • 平均值 markLine
series: [ { ...... markLine: { data: [ { type: 'average', name: '平均值' } ] } } 
]

在这里插入图片描述

  • 显示
    • 数值显示 label
series: [ { ...... label: { show: true, // 是否可见 rotate: 60 // 旋转角度 } } 
]

在这里插入图片描述

    • 柱宽度 barWidth
series: [ { ...... barWidth: '30%' // 柱的宽度 } 
]

在这里插入图片描述

    • 横向柱状图
      所谓的横向柱状图, 只需要让x轴的角色和y轴的角色互换一下即可. 既 xAxis 的 type 设置为value , yAxis 的 type 设置为 category , 并且设置 data 即可
var option = { xAxis: { type: 'value' },yAxis: { type: 'category', data: xDataArr },series: [ { type: 'bar', data: yDataArr } ] 
}

在这里插入图片描述

2.1.3 柱状图特点

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

2.1.4 通用配置

使用 ECharts 绘制出来的图表, 都天生就自带一些功能, 这些功能是每一个图表都具备的, 我们可以通过配置, 对这些功能进行设置.

  • 标题: title
var option = { title: { text: "成绩", // 标题文字 textStyle: { color: 'red' // 文字颜色 },borderWidth: 5, // 标题边框 borderColor: 'green', // 标题边框颜色 borderRadius: 5, // 标题边框圆角 left: 20, // 标题的位置 top: 20 // 标题的位置 } 
}

在这里插入图片描述

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

    • 触发类型: trigger

可选值有item\axis

    • 触发时机: triggerOn

可选值有 mouseOver\click

    • 格式化显示: formatter
      • 字符串模板
var option = { tooltip: { trigger: 'item', triggerOn: 'click', formatter: '{b}:{c}' } 
}
//这个{b} 和 {c} 所代表的含义不需要去记, 在官方文档中有详细的描述
      • 回调函数
var option = { tooltip: { trigger: 'item', triggerOn: 'click', formatter: function (arg) { return arg.name + ':' + arg.data } } 
}

在这里插入图片描述

  • 工具按钮: toolbox
    toolbox 是 ECharts 提供的工具栏, 内置有 导出图片,数据视图, 重置, 数据区域缩放, 动态类型切换五个工具

工具栏的按钮是配置在 feature 的节点之下

var option = { toolbox: { feature: { saveAsImage: {}, // 将图表保存为图片 dataView: {}, // 是否显示出原始数据 restore: {}, // 还原图表 dataZoom: {}, // 数据缩放 magicType: { // 将图表在不同类型之间切换,图表的转换需要数据的支持 type: ['bar', 'line'] } } } 
}

在这里插入图片描述

  • 图例: legend
    legend 是图例,用于筛选类别,需要和 series 配合使用
    • legend 中的 data 是一个数组
    • legend 中的 data 的值需要和 series 数组中某组数据的 name 值一致
var option = { legend: { data: ['语文', '数学'] },xAxis: { type: 'category', data: ['张三', '李四', '王五', '闰土', '小明', '茅台', '二妞', '大强'] },yAxis: { type: 'value' },series: [ { name: '语文', type: 'bar', data: [88, 92, 63, 77, 94, 80, 72, 86] }, {name: '数学', type: 'bar', data: [93, 60, 61, 82, 95, 70, 71, 86] } ] 
}

在这里插入图片描述

2.2 图表2 折线图

2.2.1 折线图的实现步骤

  • 步骤1 ECharts 最基本的代码结构
<!DOCTYPE html>
<html lang="en"><head><script src="js/echarts.min.js"></script></head><body><div style="width: 600px;height:400px"></div><script>var mCharts = echarts.init(document.querySelector("div")) var option = {}mCharts.setOption(option)</script></body>
</html>

此时 option 是一个空空如也的对象

  • 步骤2 准备 x 轴的数据
var xDataArr = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
  • 步骤3 准备 y 轴的数据
var yDataArr = [3000, 2800, 900, 1000, 800, 700, 1400, 1300, 900, 1000, 800, 600]
  • 步骤4 准备 option , 将 series 中的 type 的值设置为: line
var option = { xAxis: { type: 'category', data: xDataArr },yAxis: { type: 'value' },series: [ { type: 'line', data:yDataArr } ] 
}

最终的效果如下:
在这里插入图片描述

2.2.2 折线图的常见效果

  • 标记
    • 最大值\最小值 markPoint
var option = { series: [ { ...... markPoint: {data: [ { type: 'max', name: '最大值' }, {type: 'min', name: '最小值' } ] } } ] 
}

在这里插入图片描述

    • 平均值 markLine
var option = { series: [ { ...... markLine: { data: [ { type: 'average', name: '平均值' } ] } } ] 
}

在这里插入图片描述

    • 标注区间 markArea
var option = { series: [ { ...... markArea: { data: [ [ { xAxis: '1月' }, {xAxis: '2月' }],[ { xAxis: '7月' }, {xAxis: '8月' } ] ] } } ] 
}

在这里插入图片描述

  • 线条控制
    • 平滑线条 smooth
var option = { series: [ { ...... smooth: true } ] 
}

在这里插入图片描述

    • 线条样式 lineStyle
var option = { series: [ { ...... smooth: true, lineStyle: { color: 'green', type: 'dashed' // 可选值还有 dotted solid } } ] 
}

在这里插入图片描述

  • 填充风格 areaStyle
var option = { series: [ { type: 'line', data: yDataArr, areaStyle: { color: 'pink' } } ] 
}

在这里插入图片描述

  • 紧挨边缘 boundaryGap
    boundaryGap 是设置给 x 轴的, 让起点从 x 轴的0坐标开始
var option = { xAxis: { type: 'category', data: xDataArr, boundaryGap: false } 
}

在这里插入图片描述

  • 放, 脱离0值比例
    • 如果每一组数据之间相差较少, 且都比0大很多, 那么有可能会出现这种情况
var yDataArr = [3005, 3003, 3001, 3002, 3009, 3007, 3003, 3001, 3005, 3004, 3001, 3009] // 此时y轴的数据都在3000附近, 每个数之间相差不多 
var option = { xAxis: {type: 'category', data: xDataArr },yAxis: { type: 'value' },series: [ { type: 'line', data: yDataArr } ] 
}

效果如下图:
在这里插入图片描述

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

    • scale 配置
      scale 应该配置给 y 轴
var option = { yAxis: { type: 'value', scale: true } 
}

在这里插入图片描述

  • 堆叠图
    堆叠图指的是, 同个类目轴上系列配置相同的 stack 值后,后一个系列的值会在前一个系列的值上相加
    如果在一个图表中有两个或者多个折线图, 在没有使用堆叠配置的时候, 效果如下:
<script>var mCharts = echarts.init(document.querySelector("div")) var xDataArr = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']var yDataArr1 = [120, 132, 101, 134, 90, 230, 210]var yDataArr2 = [20, 82, 191, 94, 290, 330, 310]var option = {xAxis: {type: 'category',data: xDataArr},yAxis: {type: 'value',scale: true},series: [{type: 'line',data: yDataArr1}, {type: 'line',data: yDataArr2}]}mCharts.setOption(option)
</script>

在这里插入图片描述

使用了堆叠图之后:

var option = {series: [{type: 'line',data: yDataArr1,stack: 'all' ,// series中的每一个对象配置相同的stack值, 这个all可以任意写 },{ type: 'line', data: yDataArr2, stack: 'all' ,// series中的每一个对象配置相同的stack值, 这个all可以任意 写 } ,] ,}

在这里插入图片描述

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

2.2.3 折线图的特点

折线图更多的使用来呈现数据随时间的『变化趋势』

2.3 图表3 散点图

2.3.1 散点图的实现步骤

  • 步骤1 ECharts 最基本的代码结构
<!DOCTYPE html>
<html lang="en"><head><script src="js/echarts.min.js"></script></head><body><div style="width: 600px;height:400px"></div><script>var mCharts = echarts.init(document.querySelector("div")) var option = {}mCharts.setOption(option)</script></body>
</html>

此时 option 是一个空空如也的对象

  • 步骤2 准备 x 轴和 y 轴的数据
var data = [{"gender": "female","height": 161.2,"weight": 51.6
}, {"gender": "female","height": 167.5,"weight": 59
}, {"gender": "female","height": 159.5,"weight": 49.2
}, {"gender": "female","height": 157,"weight": 63
}, {"gender": "female","height": 155.8,"weight": 53.6
}, {"gender": "female","height": 170,"weight": 59
}, {"gender": "female","height": 159.1,"weight": 47.6
}, {"gender": "female","height": 166,"weight": 69.8
}, {"gender": "female","height": 176.2,"weight": 66.8
}, {"gender": "female","height": 160.2,"weight": 75.2
}, {"gender": "female","height": 172.5,"weight": 55.2
}, {"gender": "female","height": 170.9,"weight": 54.2
}, {"gender": "female","height": 172.9,"weight": 62.5
}, {"gender": "female","height": 153.4,"weight": 42
}, {"gender": "female","height": 160,"weight": 50
}, {"gender": "female","height": 147.2,"weight": 49.8
}, ...此处省略...]

假设这个数据是从服务器获取到的, 数组中的每一个元素都包含3个维度的数据: 性别,身高,体重, 而散点图需要的数据是一个二维数组, 所以我们需要将从服务器获取到的这部分数据,通过代码生成散点图需要的数据

var axisData = []
for (var i = 0; i < data.length; i++) {var height = data[i].heightvar weight = data[i].weightvar itemArr = [height, weight] axisData.push(itemArr)
}

axisData 就是一个二维数组, 数组中的每一个元素还是一个数组, 最内层数组中有两个元素, 一个代表身高, 一个代表体重

  • 步骤3 准备配置项
    • xAxis 和 yAxis 的 type 都要设置为 value
    • 在 series 下设置 type:scatter
var option = {xAxis: {type: 'value'},yAxis: {type: 'value'},series: [{type: 'scatter',data: axisData}]
}
  • 步骤4 调整配置项, 脱离0值比例
    给 xAxis 和 yAxis 配置 scale 的值为 true
var option = {xAxis: {type: 'value',scale: true},yAxis: {type: 'value',scale: true},series: [{type: 'scatter',data: axisData,}]
}

在这里插入图片描述

2.3.2 散点图的常见效果

  • 气泡图效果
    要能够达到气泡图的效果, 其实就是让每一个散点的大小不同, 让每一个散点的颜色不同
    • symbolSize 控制散点的大小
    • itemStyle.color 控制散点的颜色

这两个配置项都支持固定值的写法, 也支持回调函数的写法
固定值的写法如下:

var option = {series: [{type: 'scatter',data: axisData,symbolSize: 25,itemStyle: {color: 'green',}}]
}

在这里插入图片描述

回调函数的写法如下:

var option = {series: [{type: 'scatter',data: axisData,symbolSize: function(arg) {var weight = arg[1]var height = arg[0] / 100 // BMI > 28 则代表肥胖, 肥胖的人用大的散点标识, 正常的人用小散点标识 // BMI: 体重/ 身高*身高 kg mvar bmi = weight / (height * height) if (bmi > 28) {return 20}return 5},itemStyle: {color: function(arg) {var weight = arg.data[1]var height = arg.data[0] / 100var bmi = weight / (height * height) if (bmi > 28) {return 'red'}return 'green'}}}]
}

在这里插入图片描述

  • 涟漪动画效果
    • type:effectScatter
      将 type 的值从 scatter 设置为 effectScatter 就能够产生涟漪动画的效果
    • rippleEffect
      rippleEffect 可以配置涟漪动画的大小
var option = {series: [{type: 'effectScatter',rippleEffect: {scale: 3}}]
}

在这里插入图片描述

    • showEffectOn
      showEffectOn 可以控制涟漪动画在什么时候产生, 它的可选值有两个: render 和 emphasis render 代表界面渲染完成就开始涟漪动画
      emphasis 代表鼠标移过某个散点的时候, 该散点开始涟漪动画
var option = {series: [{type: 'effectScatter',showEffectOn: 'emphasis',rippleEffect: {scale: 3}}]
}

在这里插入图片描述

2.3.3 散点图的特点

散点图可以帮助我们推断出不同维度数据之间的相关性, 比如上述例子中,看得出身高和体重是正相关, 身高越高, 体重越重

散点图也经常用在地图的标注上

2.3.4 直角坐标系的常见配置

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

  • 配置1: 网格 grid
    grid是用来控制直角坐标系的布局和大小, x轴和y轴就是在grid的基础上进行绘制的
    • 显示 grid
      show: true
    • grid 的边框
      borderWidth : 10
    • grid 的位置和大小
      left top right bottom
      width height
var option = {grid: {show: true, // 显示grid borderWidth: 10, // grid的边框宽度 borderColor: 'red', // grid的边框颜色 left: 100, // grid的位置 top: 100, width: 300, // grid的大小 height: 150 ,} ,
}
  • 配置2: 坐标轴 axis
    坐标轴分为x轴和y轴, 一个 grid 中最多有两种位置的 x 轴和 y 轴
    • 坐标轴类型 type
      value : 数值轴, 自动会从目标数据中读取数据
      category : 类目轴, 该类型必须通过 data 设置类目数据
    • 坐标轴位置
      xAxis : 可取值为 top 或者 bottom
      yAxis : 可取值为 left 或者 right
var option = {xAxis: {type: 'category',data: xDataArr,position: 'top'},yAxis: {type: 'value',position: 'right'}
}
  • 配置3: 区域缩放 dataZoom
    dataZoom 用于区域缩放, 对数据范围过滤, x轴和y轴都可以拥有, dataZoom 是一个数组, 意味着可以配置多个区域缩放器
    • 区域缩放类型 type
      slider : 滑块
      inside : 内置, 依靠鼠标滚轮或者双指缩放
    • 产生作用的轴
      xAxisIndex :设置缩放组件控制的是哪个 x 轴, 一般写0即可
      yAxisIndex :设置缩放组件控制的是哪个 y 轴, 一般写0即可
    • 指明初始状态的缩放情况
      start : 数据窗口范围的起始百分比
      end : 数据窗口范围的结束百分比
var option = {xAxis: {type: 'category',data: xDataArr},yAxis: {type: 'value'},dataZoom: [{type: 'slider',xAxisIndex: 0}, {type: 'slider',yAxisIndex: 0,start: 0,end: 80}]
}

在这里插入图片描述

需要注意的是, 针对于非直角坐标系图表, 比如饼图 地图 等, 以上三个配置可能就不会生效了

2.4 .图表4 饼图

2.4.1 饼图的实现步骤

  • 步骤1 ECharts 最基本的代码结构
<!DOCTYPE html>
<html lang="en"><head><script src="js/echarts.min.js"></script></head><body><div style="width: 600px;height:400px"></div><script>var mCharts = echarts.init(document.querySelector("div")) var option = {}mCharts.setOption(option)</script></body>
</html>

此时 option 是一个空空如也的对象

  • 步骤2 准备数据
var pieData = [{value: 11231,name: "淘宝",
}, {value: 22673,name: "京东"
}, {value: 6123,name: "唯品会"
}, {value: 8989,name: "1号店"
}, {value: 6700,name: "聚美优品"
}]
  • 步骤3 准备配置项 在 series 下设置 type:pie
var option = {series: [{type: 'pie',data: pieData

在这里插入图片描述

注意:

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

2.4.2 饼图的常见效果

  • 显示数值
    • label.show : 显示文字
    • label.formatter : 格式化文字
var option = {series: [{type: 'pie',data: pieData,label: {show: true,formatter: function(arg) {return arg.data.name + '平台' + arg.data.value + '元\n' + arg.percent + '%'}}}]
}
  • 南丁格尔图
    南丁格尔图指的是每一个扇形的半径随着数据的大小而不同, 数值占比越大, 扇形的半径也就越大
    • roseType:‘radius’
var option = {series: [{type: 'pie',data: pieData,label: {show: true,formatter: function(arg) {return arg.data.name + '平台' + arg.data.value + '元\n' + arg.percent + '%'}},roseType: 'radius'}]
}

在这里插入图片描述

  • 选中效果
    • selectedMode: ‘multiple’
      选中模式,表示是否支持多个选中,默认关闭,支持布尔值和字符串,字符串取值可选 ‘single’ , ‘multiple’ ,分别表示单选还是多选
    • selectedOffset: 30
      选中扇区的偏移距离
var option = {series: [{type: 'pie',data: pieData,selectedMode: 'multiple', // selectedOffset: 30 } ,] ,}

在这里插入图片描述

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

在这里插入图片描述

2.4.3 饼图的特点

饼图可以很好地帮助用户快速了解不同分类的数据的占比情况

2.5 图表5 地图

2.5.1 地图图表的使用方式

百度地图API : 使用百度地图的 api , 它能够在线联网展示地图, 百度地图需要申请 ak
矢量地图 : 可以离线展示地图, 需要开发者准备矢量地图数据
接下来的实现是通过矢量图的方式来实现的

2.5.2 矢量地图的实现步骤

  • 步骤1 ECharts 最基本的代码结构
<!DOCTYPE html>
<html lang="en"><head><script src="js/echarts.min.js"></script></head><body><div style="width: 600px;height:400px"></div><script>var mCharts = echarts.init(document.querySelector("div")) var option = {}mCharts.setOption(option)</script></body>
</html>

此时 option 是一个空空如也的对象

  • 步骤2 准备中国的矢量 json 文件, 放到 json/map/ 目录之下
  • 步骤3 使用 Ajax 获取 china.json
$.get('json/map/china.json', function (chinaJson) { })
  • 步骤4 在Ajax的回调函数中, 往 echarts 全局对象注册地图的 json 数据
    echarts.registerMap(‘chinaMap’, chinaJson)
$.get('json/map/china.json', function (chinaJson) { echarts.registerMap('chinaMap', chinaJson) })
  • 步骤5 获取完数据之后, 需要配置 geo 节点, 再次的 setOption
    type : ‘map’
    map : ‘chinaMap’
var mCharts = echarts.init(document.querySelector("div")) $.get('json/map/china.json', function(chinaJson) {echarts.registerMap('chinaMap', chinaJson) var option = {geo: {type: 'map', // map是一个固定的值map: 'chinaMap', //chinaMap需要和registerMap中的第一个参数保持一致}};mCharts.setOption(option)
})

在这里插入图片描述

注意: 需要注意的是, 由于在代码中使用了 Ajax , 所以, 关于此文件的打开, 不能以 file 的协议打开, 应该将其置于 HTTP 的服务之下方可正常展示地图

2.5.3 地图的常见配置

  • 缩放拖动: roam
var option = {geo: {type: 'map', // map是一个固定的值 map: 'chinaMap',//chinaMap需要和registerMap中的第一个参数保持一致, roam: true, // 运行使用鼠标进行拖动和缩放 } ,
}
  • 名称显示: label
var option = {geo: {type: 'map', // map是一个固定的值 map: 'chinaMap',//chinaMap需要和registerMap中的第一个参数保持一致, roam: true, label: { show: true ,} ,} ,}

在这里插入图片描述

  • 初始缩放比例: zoom
  • 地图中心点: center
var option = {geo: {type: 'map', // map是一个固定的值 map: 'chinaMap',//chinaMap需要和registerMap中的第一个参数保持一致, roam: true, label: { show: true ,},zoom: 0.8, // 地图的缩放比例, 大于1代表放大, 小于1代表缩小 center: [87.617733, 43.792818] ,// 当前视角的中心点,用经纬度表示 } ,
}

在这里插入图片描述

2.5.4 地图的常见效果

  • 显示某个区域
    • 准备安徽省的矢量地图数据
      在这里插入图片描述
    • 加载安徽省地图的矢量数据
$.get('json/map/anhui.json', function (anhuiJson) { })
    • 在Ajax的回调函数中注册地图矢量数据
      echarts.registerMap(‘anhui’, anhuiJson)
    • 配置 geo 的 type:‘map’ , map:‘anhui’
    • 通过 zoom 调整缩放比例
    • 通过 center 调整中心点
< script >var mCharts = echarts.init(document.querySelector("div")) $.get('json/map/anhui.json', function(anhuiJson) {console.log(anhuiJson) echarts.registerMap('anhui', anhuiJson) var option = {geo: {type: 'map',map: 'anhui',label: {show: true},zoom: 1.2,center: [116.507676, 31.752889]}};mCharts.setOption(option)}) < /script>

在这里插入图片描述

  • 不同城市颜色不同
    • 1.显示基本的中国地图
<!DOCTYPE html>
<html lang="en"><body><div style="width: 600px;height:400px;border:1px solid red"></div><script>var mCharts = echarts.init(document.querySelector("div")) $.get('json/map/china.json', function(chinaJson) {echarts.registerMap('chinaMap', chinaJson) var option = {geo: {type: 'map',map: 'chinaMap',roam: true,label: {show: true}}}mCharts.setOption(option)})</script></body>
</html>
    • 2.准备好城市空气质量的数据, 并且将数据设置给 series
var airData = [{name: '北京',value: 39.92}, {name: '天津',value: 39.13}, {name: '上海',value: 31.22}, {name: '重庆',value: 66}, {name: '河北',value: 147}, {name: '河南',value: 113}, {name: '云南',value: 25.04}, {name: '辽宁',value: 50}, {name: '黑龙江',value: 114}, {name: '湖南',value: 175}, {name: '安徽',value: 117}, {name: '山 东',value: 92}, {name: '新疆',value: 84}, {name: '江苏',value: 67}, {name: '浙江',value: 84}, {name: '江西',value: 96}, {name: '湖北',value: 273}, {name: '广西',value: 59}, {name: '甘肃',value: 99}, {name: '山西',value: 39}, {name: '内蒙古',value: 58}, {name: '陕西',value: 61}, {name: '吉林',value: 51}, {name: '福建',value: 29}, {name: '贵州',value: 71}, {name: '广东',value: 38}, {name: '青海',value: 57}, {name: '西藏',value: 24}, {name: '四川',value: 58}, {name: '宁夏',value: 52}, {name: '海南',value: 54}, {name: '台湾',value: 88}, {name: '香港',value: 66}, {name: '澳门',value: 77}, {name: '南海诸岛',value: 55}]......var option = {......series: [{data: airData}]}
    • 3.将 series 下的数据和 geo 关联起来
      geoIndex: 0
      type: ‘map’
var option = {series: [{data: airData,geoIndex: 0,type: 'map'}]
}
    • 4.结合 visualMap 配合使用
      visualMap 是视觉映射组件, 和之前区域缩放 dataZoom 很类似, 可以做数据的过滤. 只不过dataZoom 主要使用在直角坐标系的图表, 而 visualMap 主要使用在地图或者饼图中
var option = {geo: {type: 'map',map: 'chinaMap',roam: true,label: {show: true}},series: [{data: airData,geoIndex: 0,type: 'map'}],visualMap: {min: 0, // 最小值 max: 300, // 最大值 inRange: { color: ['white', 'red'] ,// 颜色的范围 },calculable: true ,// 是否显示拖拽用的手柄(手柄能拖拽调整选中范围) } ,}

在这里插入图片描述

  • 地图和散点图结合
    • 1.给 series 这个数组下增加新的对象
    • 2.准备好散点数据,设置给新对象的 data
var scatterData = [{value: [117.283042, 31.86119] ,// 散点的坐标, 使用的是经纬度 } ,
]
    • 3.配置新对象的 type
      type:effectScatter
    • 让散点图使用地图坐标系统
      coordinateSystem: ‘geo’
    • 让涟漪的效果更加明显
      rippleEffect: { scale: 10 }
var option = {series: [{data: airData,geoIndex: 0,type: 'map'}, {data: scatterData,type: 'effectScatter',coordinateSystem: 'geo',rippleEffect: {scale: 10}}]
}

在这里插入图片描述

2.6 图表6 雷达图

  • 步骤1 ECharts 最基本的代码结构
<!DOCTYPE html>
<html lang="en"><head><script src="js/echarts.min.js"></script></head><body><div style="width: 600px;height:400px"></div><script>var mCharts = echarts.init(document.querySelector("div")) var option = {}mCharts.setOption(option)</script></body>
</html>

此时 option 是一个空空如也的对象

  • 步骤2 定义各个维度的最大值
var dataMax = [{name: '易用性',max: 100
}, {name: '功能',max: 100
}, {name: '拍照',max: 100
}, {name: '跑分',max: 100
}, {name: '续航',max: 100
}]
  • 步骤3 准备具体产品的数据
var hwScore = [80, 90, 80, 82, 90] 
var zxScore = [70, 82, 75, 70, 78]
  • 步骤4 在 series 下设置 type:radar
var option = {radar: {indicator: dataMax},series: [{type: 'radar',data: [{name: '华为手机1',value: hwScore}, {name: '中兴手机1',value: zxScore}]}]3.6 .2.雷达图的常见效果显示数值 label
}

在这里插入图片描述

2.6.1 雷达图的常见效果

  • 显示数值 label
var option = {series: [{type: 'radar',label: {show: true},data: [{name: '华为手机1',value: hwScore}, {name: '中兴手机1',value: zxScore}]}]
}

在这里插入图片描述

  • 区域面积 areaStyle
var option = {series: [{type: 'radar',label: {show: true},areaStyle: {},data: [{name: '华为手机1',value: hwScore}, {name: '中兴手机1',value: zxScore}]}]
}

在这里插入图片描述

  • 绘制类型 shape
    雷达图绘制类型,支持 ‘polygon’ 和 ‘circle’
    ‘polygon’ : 多边形
    ‘circle’ 圆形
var option = {radar: {indicator: dataMax,shape: 'circle'},series: [{type: 'radar',label: {show: true},data: [{name: '华为手机1',value: hwScore}, {name: '中兴手机1',value: zxScore}]}]
}

在这里插入图片描述

3. 配置项小结

3.1 柱状图 bar

在这里插入图片描述

3.2 折线图 line

在这里插入图片描述

3.3 散点图 scatter

在这里插入图片描述

3.4 饼图 pie

在这里插入图片描述

3.5 地图 map

在这里插入图片描述

3.6 雷达图 radar

在这里插入图片描述

3.7 直角坐标系配置

在这里插入图片描述

3.8 通用配置

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/115214.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

指标收集与分析:打造可观测性平台的关键技术【文末送书】

文章目录 写在前面兼容全域信号量所谓全域信号量有哪些&#xff1f;统一采集和上传工具统一的存储后台自由探索和综合使用数据好书推荐 写作末尾 写在前面 随着可观测性理念的深入人心&#xff0c;可观测性平台已经开始进入了落地阶段&#xff0c;它的先进性已经毋庸置疑&…

【100天精通Python】Day67:Python可视化_Matplotlib 绘动画,2D、3D 动画 示例+代码

1 绘制2D动画&#xff08;animation&#xff09; Matplotlib是一个Python绘图库&#xff0c;它提供了丰富的绘图功能&#xff0c;包括绘制动画。要绘制动画&#xff0c;Matplotlib提供了FuncAnimation类&#xff0c;允许您创建基于函数的动画。下面是一个详细的Matplotlib动画示…

尝试访问启动磁盘设置时出错怎么办?

当出现“尝试访问启动磁盘设置时出错”这样的错误提示&#xff0c;而且启动转换控制面板打不开了时&#xff0c;是无法开启触摸板功能的。我们可以使用以下方法来解决问题。 1. 在Windows桌面左下角搜索框输入“计算机管理”后点击“打开”。 2. 点击“本地用户与组”&#xff…

[JAVEee]SpringBoot项目的创建

SpringBoot可以更好的开发Spring项目,本文章将使用idea社区版来演示创建项目的过程与注意事项. SpringBoot的优点 SpringBoot中内置快速添加依赖的功能,能够便捷的集成各种框架,帮助开发.内置运行容器,无需配置Tomcat容器等其他web容器,可直接进行项目的部署与运行.更好的使用…

机器学习(15)---代价函数、损失函数和目标函数详解

文章目录 一、各自定义二、各自详解三、代价函数和损失函数区别四、例题理解 一、各自定义 1. 代价函数&#xff1a;代价函数&#xff08;Cost Function&#xff09;是定义在整个训练集上的&#xff0c;是所有样本误差的平均&#xff0c;也就是损失函数的平均。它用于衡量模型在…

有什么推荐使用的企业上网行为管理软件?

在当今信息化社会&#xff0c;企业的上网行为管理越来越重要。企业上网行为软件是一种能够监控和管理企业员工上网行为的工具&#xff0c;它可以帮助企业更好地管理网络资源&#xff0c;提高工作效率&#xff0c;保护企业信息安全&#xff0c;并符合相关的法律法规。本文将深入…

《信息系统项目管理师教程(第4版)》第1章至第5章 信息化发展、信息技术发展、信息系统治理、信息系统管理、信息系统工程 常见考点、知识点、思维导图、xmind

第一章至第五章多以选择题形式考察&#xff0c;分值在20分左右。已将考点、知识点整理成思维导图&#xff0c;可免费下载。以下是思维导图的部分截图&#xff1a; 第一章 信息化发展 第二章 信息技术发展 第三章 信息系统治理 第四章 信息系统管理 第五章 信息系统工程

【力扣】三角形最小路径和

目录 题目 例子 示例 1&#xff1a; 示例 2&#xff1a; 前言 思路 思想 代码 调用的函数 主函数 所有代码 力扣提交的代码 运行结果 小结 题目 给定一个三角形 triangle &#xff0c;找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结…

企望制造ERP系统RCE漏洞 复现

文章目录 企望制造ERP系统RCE漏洞 复现0x01 前言0x02 漏洞描述0x03 影响平台0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 企望制造ERP系统RCE漏洞 复现 0x01 前言 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播…

【操作系统笔记十三】Shell脚本编程

什么是 shell shell 就是命令解释器&#xff0c;用于解释用户对操作系统的操作&#xff0c;比如当我们在终端上执行 ls &#xff0c;然后回车&#xff0c;这个时候会由 shell 来解释这个命令&#xff0c;并且执行解释后的命令&#xff0c;进而对操作系统进行操作。 在 Centos…

灾备系统中的多线程传输功能

多线程传输是指同时使用多个线程进行文件传输&#xff0c;使多个数据包可以同时传输&#xff0c;从而充分利用网络带宽的最大值&#xff0c;提高传输速度。 正常的IE页面文件下载与上传都只有一个线程&#xff0c;有些软件可以实现多线程文件传输&#xff0c;就好像在传输文件…

【从入门到起飞】JavaSE—方法引用

&#x1f38a;专栏【JavaSE】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【The truth that you leave】 &#x1f970;欢迎并且感谢大家指出我的问题 文章目录 &#x1f354;概述&#x1f354;注意&#x1f388;如何确定是否是…