数据可视化echarts学习笔记

目录,介绍

知识储备

一端操作,多端联动的效果(开启了多个网页,操作一端,多个网页的效果会跟着改变)

cmd命令控制面板返回上一级或上上级

在当前目录打开文件:

cd 文件名

在Windows命令提示符(cmd)中,要返回上一级目录,可以使用以下命令:

cd ..

这将把当前工作目录改变到上一级目录中。如果你想连续返回多级目录,可以重复使用该命令,或者使用如下命令:

cd ..\..

这将返回两级目录。如果需要返回三级或更多,可以继续添加 \..。

例如,返回三级目录:

cd ..\..\..

请注意,这些命令只在命令提示符下有效,不适用于PowerShell

 ECharts的快速上手

ECharts 的入门使用特别简单 , 5 分钟就能够上手 . 他大体分为这几个步骤
步骤 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 )
一个图表最终呈现什么样子 , 完全取决于这个配置项 . 所以对于不同的图表 , 除了 配置项会发生改变 之外 , 其他的代码 都是 固定不变 的。配置项都是以 键值对 的形式存在

 柱状图

可以改变x和y轴的type类型,是否为类目轴还是数值轴

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><!-- 步骤1:引入 echarts.js 文件 --><script src="./lib/echarts.min.js"></script></head><body><!-- 步骤2:准备一个呈现图表的盒子 --><div style="width: 600px; height: 400px"></div><script>// 参数,dom,决定图表最终呈现的位置// 步骤3:初始化 echarts 实例对象var mCharts = echarts.init(document.querySelector("div"));var xDataArr = ["张三1","张三2","张三3","张三4","张三5","张三6","张三7","张三8",];var yDataArr = [88, 92, 63, 77, 94, 80, 72, 86];// 准备配置项,实际上就是一个对象// 步骤4:准备配置项,以后在项目中除了这一块不一样之外,其他都是一样的var option = {xAxis: {type: "value", // category: 类目轴},yAxis: {type: "category", // value: 数值轴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, // 通过series当中的data来配置y轴的数据},],};// 步骤5:将配置项设置给 echarts 实例对象mCharts.setOption(option);</script></body>
</html>
注意 : 坐标轴 xAxis 或者 yAxis 中的配置 , type 的值主要有两种 : category value , 如果 type
属性的值为 category , 那么需要配置 data 数据 , 代表在 x 轴的呈现 . 如果 type 属性配置为 value ,
那么无需配置 data , 此时 y 轴会自动去 series 下找数据进行图表的绘制

柱状图的常见效果
标记:
最大值 \ 最小值 markPoint
平均值 markLine
显示
数值显示 label
提示框: tooltip
tooltip 指的是当鼠标移入到图表或者点击图表时, 展示出的提示框
        格式化显示: formatter
        字符串模板
        回调函数

通用配置toolbox

saveAsImage还有其他配置项,比如导出图片等

        toolbox: {feature: {// 各工具配置项。// 除了各个内置的工具按钮外,还可以自定义工具按钮。// 注意,自定义的工具名字,只能以 my 开头,例如下例中的 myTool1,myTool2:saveAsImage: {}, //保存为图片dataView: {}, // 数据视图工具,可以展现当前图表所用的数据,编辑后可以动态更新。restore: {}, // 配置项还原dataZoom: {}, //数据区域缩放。目前只支持直角坐标系的缩放。magicType: {type: ["line", "bar"],}, // 动态图表类型的切换},},
图例: legend
legend 是图例 , 用于筛选类别 , 需要和 series 配合使用
legend 中的 data 是一个数组
legend 中的 data 的值需要和 series 数组中某组数据的 name 值一致

总体代码展示:

  <body><!-- 步骤2:准备一个呈现图表的盒子 --><div style="width: 600px; height: 400px"></div><script>// 参数,dom,决定图表最终呈现的位置// 步骤3:初始化 echarts 实例对象var mCharts = echarts.init(document.querySelector("div"));var xDataArr = ["张三","李四","王五","闰土","小明","茅台","二妞","大强",];var yDataArr1 = [88, 92, 63, 77, 94, 80, 72, 86];var yDataArr2 = [86, 72, 83, 97, 64, 80, 82, 96];// 准备配置项,实际上就是一个对象// 步骤4:准备配置项,以后在项目中除了这一块不一样之外,其他都是一样的var option = {title: {text: "成绩展示",subtext: "副标题",textStyle: {color: "red", // 文本颜色}, // 主标题样式borderWidth: 5, //数值类型 标题的边框线宽borderColor: "blue", // 标题的边框颜色borderRadius: 5, // 圆角半径top: 0, //title 组件离容器上侧的距离left: 60, // title 组件离容器左侧的距离subtextStyle: {color: "blue",}, // 副标题样式},// legend 是图例,用于筛选类别,需要和 series 配合使用// legend 中的 data 的值需要和 series 数组中某组数据的 name 值一致legend: {data: ["语文", "数学"],},// 提示框组件,tooltip 指的是当鼠标移入到图表或者点击图表时, 展示出的提示框tooltip: {// trigger: "item", //数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用// trigger: "axis", //坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用// 提示框触发的条件triggerOn: "click", // 鼠标点击时触发// 提示框浮层内容格式器,支持字符串模板和回调函数两种形式// 字符串模板// formatter: "haha",// formatter: "{b}的成绩是 {c}",// formatter: "{b0}: {c0}<br />{b1}: {c1}",// 回调函数formatter: function (arg) {// console.log(arg, "++++00000");return arg.name + "的分数是:" + arg.data;},},toolbox: {feature: {// 各工具配置项。// 除了各个内置的工具按钮外,还可以自定义工具按钮。// 注意,自定义的工具名字,只能以 my 开头,例如下例中的 myTool1,myTool2:saveAsImage: {}, //保存为图片dataView: {}, // 数据视图工具,可以展现当前图表所用的数据,编辑后可以动态更新。restore: {}, // 配置项还原dataZoom: {}, //数据区域缩放。目前只支持直角坐标系的缩放。magicType: {type: ["line", "bar"],}, // 动态图表类型的切换},},xAxis: {type: "category",data: xDataArr,},yAxis: {type: "value",},series: [{name: "语文", // 系列名称type: "bar",data: yDataArr1,},{name: "数学", // 系列名称type: "bar",data: yDataArr2,},],};// 步骤5:将配置项设置给 echarts 实例对象mCharts.setOption(option);</script></body>

折线图

还有其他配置,跟柱状图的配置类似,可以官网,比如标题设置等
线条控制
平滑线条 smooth
线条样式 lineStyle
填充风格 areaStyle
紧挨边缘 boundaryGap
boundaryGap 是设置给 x 轴的 , 让起点从 x 轴的 0 坐标开始

效果如下:

代码:

  <body><!-- 步骤2:准备一个呈现图表的盒子 --><div style="width: 600px; height: 400px"></div><script>// 参数,dom,决定图表最终呈现的位置// 步骤3:初始化 echarts 实例对象var mCharts = echarts.init(document.querySelector("div"));var xDataArr = ["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月",];var yDataArr = [3000, 2800, 900, 1000, 800, 700, 1400, 1300, 900, 1000, 800, 600,];// 准备配置项,实际上就是一个对象// 步骤4:准备配置项,以后在项目中除了这一块不一样之外,其他都是一样的var option = {xAxis: {type: "category",data: xDataArr,},yAxis: {type: "value",},series: [{name: "康师傅",type: "line",data: yDataArr,markPoint: {data: [{type: "max",},{type: "min",},],},markLine: {data: [{type: "average",},],},markArea: {data: [[{ xAxis: "1月" }, { xAxis: "2月" }],[{ xAxis: "7月" }, { xAxis: "8月" }],],},smooth: true,lineStyle: {color: "green",type: "solid", // dotted solid},areaStyle: {color: "pink",},},],};// 步骤5:将配置项设置给 echarts 实例对象mCharts.setOption(option);</script></body>

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

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

设置之后效果

相关配置如下:

    var option = {xAxis: {type: "category",data: xDataArr,boundaryGap: false, //紧挨边缘 boundaryGap// boundaryGap 是设置给 x 轴的, 让起点从 x 轴的0坐标开始},yAxis: {type: "value",scale: true, // scale 应该配置给数值轴},series: [{name: "康师傅",type: "line",data: yDataArr,},],};

堆叠图

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

堆叠之后的效果图: 

代码:stack: all,

  <body><!-- 步骤2:准备一个呈现图表的盒子 --><div style="width: 600px; height: 400px"></div><script>// 参数,dom,决定图表最终呈现的位置// 步骤3:初始化 echarts 实例对象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];// 准备配置项,实际上就是一个对象// 步骤4:准备配置项,以后在项目中除了这一块不一样之外,其他都是一样的var option = {xAxis: {type: "category",data: xDataArr,},yAxis: {type: "value",stack: true,},series: [{type: "line",data: yDataArr1,stack: "all", // series中的每一个对象配置相同的stack值, 这个all可以任意写areaStyle: {},},{type: "line",data: yDataArr2,stack: "all", // series中的每一个对象配置相同的stack值, 这个all可以任意写areaStyle: {},},],};// 步骤5:将配置项设置给 echarts 实例对象mCharts.setOption(option);</script></body>

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

散点图

假设这个数据是从服务器获取到的 , 数组中的每一个元素都包含 3 个维度的数据 : 性别 , 身高 , 体重 ,
散点图需要的数据是一个二维数组 , 所以我们需要将从服务器获取到的这部分数据 , 通过代码生成散
点图需要的数据
散点图的常见效果
气泡图效果
要能够达到气泡图的效果 , 其实就是让每一个散点的大小不同 , 让每一个散点的颜色不同
symbolSize 控制散点的大小
itemStyle.color 控制散点的颜色
这两个配置项都支持固定值的写法 , 也支持回调函数的写法
设置好了效果如下:
涟漪动画效果
type:effectScatter
type 的值从 scatter 设置为 effectScatter 就能够产生涟漪动画的效果
rippleEffect
rippleEffect 可以配置涟漪动画的大小
showEffectOn
showEffectOn 可以控制涟漪动画在什么时候产生 , 它的可选值有两个 : render emphasis
render 代表界面渲染完成就开始涟漪动画
emphasis 代表鼠标移过某个散点的时候 , 该散点开始涟漪动画
注意一下,对后端返回的数据格式进行处理,以便能够正常在前端页面中显示数据
    // axisData 就是一个二维数组, 数组中的每一个元素还是一个数组, 最内层数组中有两个元素, 一个            代表身高, 一个代表体重;var axisData = [];for (var i = 0; i < data.length; i++) {var height = data[i].height;var weight = data[i].weight;var newArr = [height, weight];axisData.push(newArr);}console.log(axisData);var mCharts = echarts.init(document.querySelector("div"));var option = {xAxis: {type: "value", // 此时横坐标与纵坐标都是数值轴scale: true, //将坐标轴都设置为脱离0值比例,scale},yAxis: {type: "value",scale: true, //将坐标轴都设置为脱离0值比例,scale,不然就会挤成一堆,效果不好看},series: [{// type: "scatter",type: "effectScatter", // 开启类型的涟漪效果showEffectOn: "emphasis", // render emphasis,控制鼠标移动到某个点的时候(hover)才会产生涟漪效果// 涟漪特效相关配置rippleEffect: {scale: 10, // 控制涟漪效果的范围,动画中波纹的最大缩放比例},data: axisData,// symbolSize: 20,// 让symbolSize不是一个固定值,根据不同元素,散点的大小会发生变化symbolSize: function (arg) {console.log(arg);var height = arg[0] / 100; //之前的体重高度是cm,需要转换成mvar weight = arg[1];// bmi = 体重 / (身高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 = 体重 / (身高m*身高m) 大于28,就代表肥胖var bmi = weight / (height * height);if (bmi > 28) {return "red";}return "green";},},},],};mCharts.setOption(option);</script>
结合地图
散点图也经常结合地图来进行地图区域的标注, 这个效果将在讲解地图时实现
散点图的特点
散点图可以帮助我们推断出 不同维度数据之间的相关性 , 比如上述例子中 , 看得出身高和体重是正相关 , 身高越高, 体重越重
散点图也经常用在 地图的标注

直角坐标系

直角坐标系的图表指的是带有 x 轴和 y 轴的图表 , 常见的直角坐标系的图表有 : 柱状图 折线图 散点图
针对于直角坐标系的图表 , 有一些通用的配置
配置1: 网格 grid  与x轴,y轴不同
grid 是用来控制直角坐标系的布局和大小 , x轴和y轴就是在grid的基础上进行绘制的
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 : 数据窗口范围的结束百分比
    dataZoom: [{// type: "slider",// type: "inside",xAxisIndex: 0,}, // 需要指明产生的作用轴{// type: "slider",type: "slider",yAxisIndex: 0,// 可以指明初始状态的缩放情况start: 0, // 数据窗口范围的起始百分比end: 80, // 数据窗口范围的结束百分比},],toolbox: {feature: {dataZoom: {}, //直接设置一个空对象即可,就会在页面中呈现两个按钮},},

饼图

显示数值
label.show : 显示文字
label.formatter : 格式化文字
南丁格尔图
南丁格尔图指的是每一个扇形的半径随着数据的大小而不同 , 数值占比越大 , 扇形的半径也就越大
roseType:'radius'
选中效果
selectedMode: 'multiple'
选中模式,表示是否支持多个选中,默认关闭,支持布尔值和字符串,字符串取值可
'single' 'multiple' ,分别表示单选还是多选
selectedOffset: 30
选中扇区的偏移距离
圆环
radius
饼图的半径。可以为如下类型:
number :直接指定外半径值。 string :例如, '20%' ,表示外半径为可视区尺寸(容器高宽中
较小一项)的 20% 长度。 Array. :数组的第一项是内半径,第二项是外半径 , 通过 Array , 可以
将饼图设置为圆环图
  <body><!-- 步骤2:准备一个呈现图表的盒子 --><div style="width: 600px; height: 400px"></div><script>// 参数,dom,决定图表最终呈现的位置// 步骤3:初始化 echarts 实例对象var mCharts = echarts.init(document.querySelector("div"));// pieData就是需要设置给饼图的数据,数组,数组中包含一个又一个的对象,每一个对象中,需要有name和valuevar pieData = [{value: 11231,name: "淘宝",},{value: 22673,name: "京东",},{value: 6123,name: "唯品会",},{value: 8989,name: "1号店",},{value: 6700,name: "聚美优品",},];// 准备配置项,实际上就是一个对象// 步骤4:准备配置项,以后在项目中除了这一块不一样之外,其他都是一样的var option = {series: [{type: "pie", // 饼图并不是一个坐标系,只是要设置series就可data: pieData,label: {show: true, // 显示文字// formatter: "hehe", // 决定文字显示的内容formatter: function (arg) {console.log(arg);return (arg.name + "平台" + arg.value + "元\n" + arg.percent + "%");},},// radius: 20, // 饼图的半径// radius: "20%", // 百分比参照的是宽度和高度中较小的那一部分的一半来进行百分比设置radius: ["50%", "75%"], // 第0个元素代表的是内圆的半径,第1个元素外圆的半径roseType: "radius", // 南丁格尔图,饼图的每一个区域的半径是不同的// selectedMode: "single", // 选中的效果,能够将选中的区域偏离圆点一小段距离selectedMode: "mutiple",selectedOffset: 20, //选中偏移量},],};// 步骤5:将配置项设置给 echarts 实例对象mCharts.setOption(option);</script></body>

效果图:

地图

百度地图 API : 使用百度地图的 api , 它能够在线联网展示地图 , 百度地图需要申请 ak
矢量地图 : 可以离线展示地图 , 需要开发者准备矢量地图数据
接下来的实现是通过矢量图的方式来实现的
步骤 4 Ajax 的回调函数中 , echarts 全局对象注册地图的 json 数据
步骤 5 获取完数据之后 , 需要配置 geo 节点 , 再次的 setOption
缩放拖动 : roam
名称显示 : label
初始缩放比例 : zoom
地图中心点 : center

显示某个区域
准备安徽省的矢量地图数据
加载安徽省地图的矢量数据
$ . get ( 'json/map/anhui.json' , function ( anhuiJson ) {
})
Ajax 的回调函数中注册地图矢量数据
echarts.registerMap('anhui', anhuiJson)
配置 geo type:'map' , map:'anhui'
通过 zoom 调整缩放比例
通过 center 调整中心点
不同城市颜色不同
1. 显示基本的中国地图
2. 准备好城市空气质量的数据 , 并且将数据设置给 series
3. series 下的数据和 geo 关联起来
4. 结合 visualMap 配合使用
visualMap 是视觉映射组件, 和之前区域缩放 dataZoom 很类似, 可以做数据的过滤. 只不过
dataZoom 主要使用在直角坐标系的图表, visualMap 主要使用在地图或者饼图中
地图和散点图结合
1. series 这个数组下增加新的对象
2. 准备好散点数据 , 设置给新对象的 data
3. 配置新对象的 type
type:effectScatter
让散点图使用地图坐标系统
coordinateSystem: 'geo'
让涟漪的效果更加明显
rippleEffect: { scale: 10 }
代码实现:
  <body><!-- 步骤2:准备一个呈现图表的盒子 --><div style="width: 600px; height: 400px; border: 1px solid red"></div><script>// 参数,dom,决定图表最终呈现的位置// 步骤3:初始化 echarts 实例对象var mCharts = echarts.init(document.querySelector("div"));// 准备好城市空气质量的数据, 并且将数据设置给 seriesvar 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 scatterData = [{value: [117.283042, 31.86119], // 散点的坐标, 使用的是经纬度},];$.get("json/map/china.json", function (ret) {// ret 就是中国的各个省份的矢量地图的数据console.log(ret);echarts.registerMap("chinaMap", ret);var option = {geo: {type: "map",map: "chinaMap", // chinaMap需要和registerMap中的第一个参数保持一致roam: true, // 设置允许缩放拖动label: {show: true, //展示标签},// zoom: 1, // 设置初始化的缩放比例// center: [116.507676, 31.752889], //设置地图中心点的坐标},series: [{data: airData,geoIndex: 0, // 将空气质量的数据和第0个geo配置关联在一起type: "map",},{data: scatterData, // 配置散点的坐标数据type: "effectScatter",coordinateSystem: "geo", //指明散点使用的坐标系统,geo的坐标系统rippleEffect: {scale: 10, // 设置动画涟漪动画的缩放比例},},],visualMap: {min: 0,max: 300,inRange: {color: ["white", "red"], // 控制颜色渐变的范围},calculable: true, // 出现滑块},};// 步骤5:将配置项设置给 echarts 实例对象mCharts.setOption(option);});// 准备配置项,实际上就是一个对象// 步骤4:准备配置项,以后在项目中除了这一块不一样之外,其他都是一样的</script></body>
注意 : 需要注意的是 , 由于在代码中使用了 Ajax , 所以 , 关于此文件的打开 , 不能以 file 的协议打开 , 应 该将其置于 HTTP 的服务之下方可正常展示地图

雷达图

显示数值 label

区域面积 areaStyle
绘制类型 shape
雷达图绘制类型,支持 'polygon' 'circle'
'polygon' : 多边形
'circle' 圆形

代码实现:

     var dataMax = [{name: "易用性",max: 100,},{name: "功能",max: 100,},{name: "拍照",max: 100,},{name: "跑分",max: 100,},{name: "续航",max: 100,},];    var option = {radar: {indicator: dataMax, // 配置各个维度的最大值shape: "circle", // 配置雷达图最外层的图形展示 circle polygon},series: [{type: "radar", // 此图表是一个雷达图label: {// 设置标签的样式show: true, // 显示数值},areaStyle: {}, // 将每一个产品的雷达图形成阴影的面积data: [{name: "华为手机1",value: [80, 90, 80, 82, 90],},{name: "中兴手机1",value: [70, 82, 75, 70, 78],},],},],};

效果图: 

仪表盘图

数值范围: max min
多个指针 : 增加 data 中数组的元素
多个指针颜色的差异 : itemStyle
仪表盘可以更直观的表现出某个指标的 进度 或实际情况

代码实现:

  <body><!-- 步骤2:准备一个呈现图表的盒子 --><div style="width: 600px; height: 400px; border: 1px solid red"></div><script>// 参数,dom,决定图表最终呈现的位置// 步骤3:初始化 echarts 实例对象var mCharts = echarts.init(document.querySelector("div"));// 准备配置项,实际上就是一个对象// 步骤4:准备配置项,以后在项目中除了这一块不一样之外,其他都是一样的var option = {series: [{type: "gauge", // 此图表是一个雷达图data: [{value: 97,itemStyle: {//控制指针的样式color: "pink", // 控制指针的颜色},}, // 每一个对象代表一个指针{value: 85,itemStyle: {color: "green",},},],min: 50, // min max  控制仪表盘的范围},],};// 步骤5:将配置项设置给 echarts 实例对象mCharts.setOption(option);</script></body>

效果图:

常用配置属性总结

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

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

相关文章

NS3学习——tcpVegas算法代码详解(2)

NS3学习——tcpVegas算法代码详解&#xff08;1&#xff09;-CSDN博客 目录 4.TcpVegas类中成员函数 (5) CongestionStateSet函数 (6) IncreaseWindow函数 1.检查是否启用 Vgas 2.判断是否完成了一个“Vegas 周期” 2.1--if&#xff1a;判断RTT样本数量是否足够 2.2--e…

在 CentOS 8 系统上安装 Jenkins 的全过程

一、前言 我是一个前端开发&#xff0c;需要频繁将编写的前端系统打包更新到公司的linux服务器&#xff0c;觉得这种工作纯体力活&#xff0c;有时候太浪费时间&#xff0c;以前用过别人搭建的Jenkins可以很好的解决这个问题。 Jenkins 是一款流行的开源持续集成和持续交付&a…

Mac上Stable Diffusion的环境搭建(还算比较简单)

https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Installation-on-Apple-Silicon AI兴起的速度是真的快&#xff0c;感觉不了解点相关的东西都要与时代脱节了&#xff0c;吓得我赶紧找个AIGC看看能不能实现我艺术家的人梦想&#xff08;绷不住了&#xff09; 我…

瑞吉外卖项目学习笔记(九)套餐列表分页查询、新增套餐、图片上传和下载

瑞吉外卖项目学习笔记(一)准备工作、员工登录功能实现 瑞吉外卖项目学习笔记(二)Swagger、logback、表单校验和参数打印功能的实现 瑞吉外卖项目学习笔记(三)过滤器实现登录校验、添加员工、分页查询员工信息 瑞吉外卖项目学习笔记(四)TableField(fill FieldFill.INSERT)公共字…

VMware Workstation虚拟机网络模式

做虚拟机和宿主机互ping实验时&#xff0c;除了要提前配置好网段、ip等信息&#xff0c;还要把宿主机、虚拟机的防火墙关闭&#xff01; 首先说一下VMware的几种虚拟交换机。 VMnet0&#xff1a;用于虚拟桥接网络下的虚拟交换机。 VMnet1&#xff1a;用于虚拟Host-Only网络下…

UDP传输层通信协议详解

引言 在计算机网络通信的广阔天地中&#xff0c;传输层协议扮演着至关重要的角色。它们负责在网络中的两个终端之间建立、管理和终止数据传输。在众多传输层协议中&#xff0c;UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;以其独特的特性和应…

Node.js 工具:在 Windows 11 中配置 Node.js 的详细步骤

一、概述 记录时间 [2024-12-25] 本文讲述如何在 Windows 11 中进行 Node.js 工具的安装和配置。 以下是详细的步骤和说明。 二、安装 Node.js 1. 官网下载 通过官网&#xff0c;下载 Node.js&#xff0c;上面有好几种下载方式&#xff0c;文中下载的是 zip 压缩包。 如图&…

Chrome被360导航篡改了怎么改回来?

一、Chrome被360导航篡改了怎么改回来&#xff1f; 查看是否被360主页锁定&#xff0c;地址栏输入chrome://version&#xff0c;看命令行end后面&#xff08;蓝色部分&#xff09;&#xff0c;是否有https://hao.360.com/?srclm&lsn31c42a959f 修改步骤 第一步&#xff1a…

Mysql 查询性能调优总结

一、查询分析性能的相关配置 1.1 配置显示查询性能的参数 在 MySQL 中&#xff0c;SHOW PROFILES 命令用于显示最近的查询性能概况&#xff0c;帮助你分析哪些查询比较耗时。 show profiles; 需要启用参数 profiling&#xff0c;才能使用上述功能&#xff0c;其相关参数设置…

python中使用selenium执行组合快捷键ctrl+v不生效问题

在执行ctrlv进行粘贴时&#xff0c;绑定一个页面上的元素对象&#xff08;无论元素对象是否是引用过期或者是粘贴的目标文本区&#xff0c;但前提需要粘贴的目标文本区获取焦点&#xff09;执行ctrlv后可以生效。执行粘贴组合快捷键&#xff08;ctrlv&#xff09;的示例代码 se…

C++模板:编译时模拟Duck Typing

C泛型与多态&#xff08;4&#xff09;: Duck Typing - 简书 James Whitcomb Riley在描述这种is-a的哲学时&#xff0c;使用了所谓的鸭子测试&#xff08;Duck Test&#xff09;: 当我看到一只鸟走路像鸭子&#xff0c;游泳像鸭子&#xff0c;叫声像鸭子&#xff0c;那我就把它…

【求职面试】驾照的种类

大型客车 A1 大型载客汽车 A3、B1、B2、C1、C2、C3、C4、M 牵引车 A2 重型、中型全挂、半挂汽车列车 B1、B2、C1、C2、C3、C4、M 城市公交车 A3 核载10人以上的城市公共汽车 C1、C2、C3、C4 中型客车 B1 中型载客汽车&#xff08;10人以上、19人以下&#xff09; C1、C2、C3…

PyQt实战——使用python提取JSON数据(十)

系类往期文章&#xff1a; PyQt5实战——多脚本集合包&#xff0c;前言与环境配置&#xff08;一&#xff09; PyQt5实战——多脚本集合包&#xff0c;UI以及工程布局&#xff08;二&#xff09; PyQt5实战——多脚本集合包&#xff0c;程序入口QMainWindow&#xff08;三&…

RAG实战:构建基于本地大模型的智能问答系统

RAG实战&#xff1a;构建基于本地大模型的智能问答系统 引言 在当今AI快速发展的时代&#xff0c;如何构建一个既智能又可靠的问答系统是一个重要课题。本文将介绍如何使用RAG&#xff08;检索增强生成&#xff09;技术&#xff0c;结合本地大模型&#xff0c;构建一个高效的智…

OAuth 2.0

简介 OAuth 是一种开放标准的授权协议或框架&#xff0c;它提供了一种安全的方式&#xff0c;使第三方应用程序能够访问用户在其他服务上的受保护资源&#xff0c;而无需共享用户的凭证&#xff08;如用户名和密码&#xff09;。OAuth 的核心思想是通过“授权令牌”来代替直接…

IntelliJ IDEA 远程调试

IntelliJ IDEA 远程调试 在平时开发 JAVA 程序时&#xff0c;在遇到比较棘手的 Bug 或者是线上线下结果不一致的情况下&#xff0c;我们会通过打 Log 或者 Debug 的方式去定位并解决问题&#xff0c;两种方式各有利弊&#xff0c;今天就简要介绍下如何通过远程 Debug 的情况下…

美国辅料查询之FDA批准药用辅料数据库(IID数据库)

药用辅料的性质很大程度上决定了制剂的性质&#xff0c;每一种新的药用辅料的问世&#xff0c;都会为制剂技术的发展带来新的机遇&#xff0c;每一种药用辅料都可能让制剂研发员开发出新剂型药物&#xff0c;所以在药物制剂研发过程中&#xff0c;药用辅料的信息调研是不可或缺…

YOLOv10目标检测-训练自己的数据

yolov10 https://github.com/THU-MIG/yolov10?tabreadme-ov-file 1. 数据集 模型的建立需要收集图片并且进行标注。YOLOv10标注的文件格式如下&#xff08;每张图片对应一个标签文件&#xff09;&#xff1a; 0 0.441753 0.815461 0.061021 0.042763 1 0.395895 0.759868 …

Redis学习(五)优惠券秒杀2——分布式锁

Redis学习&#xff08;五&#xff09;优惠券秒杀2 一、分布式锁-redission二、快速入门三、redission可重入锁原理四、redission锁的MutiLock原理 一、分布式锁-redission 基于setnx实现的分布式锁存在下面的问题&#xff1a; 重入问题&#xff1a;重入问题是指 获得锁的线程…

Flink调优----资源配置调优与状态及Checkpoint调优

目录 第 1 章 资源配置调优 1.1 内存设置 1.1.1 TaskManager 内存模型 1、内存模型详解 2、案例分析 1.1.2 生产资源配置示例 1.2 合理利用 cpu 资源 1.2.1 使用 DefaultResourceCalculator 策略 1.2.2 使用 DominantResourceCalculator 策略 1.2.3 使用 DominantRes…