特点
散点图可以帮助我们推断出不同维度数据之间的相关性, 比如上述例子中,看得出身高和体重是正相关, 身 高越高, 体重越重 ,散点图也经常用在地图的标注上
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="../js/echarts.js"></script></head><body><div style="width: 600px;height:400px"></div><script> var mCharts = echarts.init(document.querySelector("div"))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 }]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)}console.log(axisData);// axisData 就是一个二维数组, 数组中的每一个元素还是一个数组, 最内层数组中有两个元素, 一个// 代表身高, 一个代表体重var option = {xAxis: { type: 'value', scale: true },yAxis: { type: 'value', scale: true },series: [{type: 'scatter',data: axisData,//控制散点大小symbolSize: 25,//控制散点的颜色itemStyle: { color: 'green', }}]}mCharts.setOption(option)</script></body></html>
动态控制散点的大小
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="../js/echarts.js"></script></head><body><div style="width: 600px;height:400px"></div><script> var mCharts = echarts.init(document.querySelector("div"))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 }]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 就是一个二维数组, 数组中的每一个元素还是一个数组, 最内层数组中有两个元素, 一个// 代表身高, 一个代表体重var option = {xAxis: { type: 'value', scale: true },yAxis: { type: 'value', scale: true },series: [{type: 'scatter',data: axisData,symbolSize:(arg)=>{console.log(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: (arg)=> {var weight = arg.data[1]var height = arg.data[0] / 100var bmi = weight / (height * height)if (bmi > 28) { return 'red' } return 'green'}}}]}mCharts.setOption(option)</script></body></html>
涟漪动画效果
type:effectScatter 将 type 的值从 scatter 设置为 effectScatter 就能够产生涟漪动画的效果 rippleEffect rippleEffect 可以配置涟漪动画的大小
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="../js/echarts.js"></script></head><body><div style="width: 600px;height:400px"></div><script> var mCharts = echarts.init(document.querySelector("div"))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 }]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 就是一个二维数组, 数组中的每一个元素还是一个数组, 最内层数组中有两个元素, 一个// 代表身高, 一个代表体重var option = {xAxis: { type: 'value', scale: true },yAxis: { type: 'value', scale: true },series: [{type: 'scatter',data: axisData,symbolSize: (arg) => {console.log(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: (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', rippleEffect: { scale: 3 } }]}mCharts.setOption(option)</script></body></html>
showEffectOn showEffectOn 可以控制涟漪动画在什么时候产生, 它的可选值有两个: render 和 emphasis render 代表界面渲染完成就开始涟漪动画 emphasis 代表鼠标移过某个散点的时候, 该散点开始涟漪动画
{ type: 'effectScatter', showEffectOn: 'emphasis', rippleEffect:{ scale:3 }}

