特点
散点图可以帮助我们推断出不同维度数据之间的相关性, 比如上述例子中,看得出身高和体重是正相关, 身 高越高, 体重越重 ,散点图也经常用在地图的标注上
<!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].height
var weight = data[i].weight
var 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].height
var weight = data[i].weight
var 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 m
var bmi = weight / (height * height)
if (bmi > 28) { return 20 } return 5
},
itemStyle: {
color: (arg)=> {
var weight = arg.data[1]
var height = arg.data[0] / 100
var 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].height
var weight = data[i].weight
var 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 m
var bmi = weight / (height * height)
if (bmi > 28) { return 20 } return 5
},
itemStyle: {
color: (arg) => {
var weight = arg.data[1]
var height = arg.data[0] / 100
var 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 }}