全部代码附结尾
- 任务描述
仪表盘(Gauge)也被称为拔号图表或速度表图,用于显示类似于速度计上的读数的数据,是一种拟物化的展示形式。仪表盘是常用的商业智能(BI)类的图表之一。可以轻松展示用户的数据。并能清晰地展示出某个指标值所在范围。为了更直观地查看项目的实际完成率数据,以及汽车的速度、发动机的转速、油表和水表的现状等,需要在Echarts中绘制单仪表盘进行展示。
- 案例描述
Echarts的主要创始者林峰表示,他在一次漫长的拥堵当中,有机会观察和思考仪表盘的问题,并突然意识到仪表盘不仅是在传达数据,还能传达出一种易于记忆的状态,并且影响人的情绪,这种正面或负面的情绪影响对决策运营有一定的帮助。
仪表盘的颜色可以用于划分指标值的类别,而刻度标识、指针指示维度、指针角度则可用于表示数值。绘制仪表盘时,只需分配最小值和最大值,并定义一个颜色范围,指针将显示出关键指标的数据或当前进度。仪表盘可用于表示速度、体积、温度、进度、完成率、满意度等。
- 实现步骤
- 引入echarts.js库文件
- 定义图表容器大小
- 初如化echarts实例对象
- 配置图表组件
var option={
title:{
text:"成绩分析"
},
series:[{name:'单仪表盘示例',
type:'gauge',
radius:'80%',
center:["50%","55%"],
startAngle:225,
endAngle:-45,
clockWise:true,
min:0,
max:100,
data:[{
name:'完成率(%)',
value:70,
}]
}]
}
- 主要参数讲解
- startAngle:225 设置仪表盘起始角度(默认为225)
- endAngle:-45 设置仪表盘结束解度,默认为-45
- Type:’gauge’ 仪表盘
- Center 表示圆心坐标,它可以是像素点表示的绝对值,也可以是数组类型,默认值为【“50%”,”50%”】.百分比计算时按照公式min(width,height)*50%进行计算,其中的Width和height分别表示div中所设置的宽度和高度。
- radius表示半径,它可以是像素点表示绝对值,也可以是数组类型,默认值为’75%’,支持绝对值(PX)和百分比。百分比计算时按照公式min(width,height)/2*75%进行计算,其中width和height分别表示div中所设置的宽度和高度。
- clockWise设置仪表盘是否顺时针增长,默认为true,它是一个布尔类型,取值只有false和true.
- Min:0,设置最小的数据值,默认为0,映射到minAngle.
- Max:100,设置最大的数据值,默认为100,映射到maxAngle
- 每隔2称重新渲染一次以实现动态效果
setInterval(function(){
option.series[0].data[0].value=(Math.random()*100).toFixed(2);
mychart.setOption(option,true);
},2000);
- 仪表盘的美化
axisLine:{}
splitLine:{}
axisTick:{}
axisLable:{}
Pointer:{}//设置仪表盘指针
itemStyle:{}//设置仪表盘指针样式
Emphasis:{}//设置高亮的仪表盘指针样式
Detail:{}//设置仪表盘详情,用于显示数据
全部代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ECharts仪表盘练习</title>
<script src="http://cdn.bootcss.com/echarts/4.8.0/echarts.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 1400px;height:600px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
/* title: {
// text: '业务指标', //标题文本内容
},
toolbox: { //可视化的工具箱
show: true,
feature: {
restore: { //重置
show: true
},
saveAsImage: {//保存图片
show: true
}
}
},
tooltip: { //弹窗组件
formatter: "{a} <br/>{b} : {c}"
},*/
series: [{//左边仪表盘
// name: '业务指标',
type: 'gauge',
detail: {formatter:'{value}'},
radius: "60%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。
center:["25%","60%"],
startAngle:220,
endAngle:55,
clockWise:true,
min:0,
max:7,
splitNumber: 7, // 仪表盘刻度的分割段数,默认 10。
axisTick: { // 刻度(线)样式。
show: true, // 是否显示刻度(线),默认 true。
splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。
length: 15, // 刻度线长。支持相对半径的百分比,默认 8。
lineStyle: { // 刻度线样式。
color: "auto", //线的颜色,默认 #eee。
opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
width: 1, //线度,默认 1。
type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted
// shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。
// shadowColor: "#fff", //阴影颜色。支持的格式同color。
},
},
axisLine: { // 仪表盘轴线(轮廓线)相关配置。
show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。
lineStyle: { // 仪表盘轴线样式。
// color: colorTemplate1, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']]
// opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
width: 10, //轴线宽度,默认 30。
// shadowBlur: 20, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。
// shadowColor: "#fff", //阴影颜色。支持的格式同color。
}
},
splitLine: { // 分隔线样式。
show: true, // 是否显示分隔线,默认 true。
length: 20, // 分隔线线长。支持相对半径的百分比,默认 30。
lineStyle: { // 分隔线样式。
color: "auto", //线的颜色,默认 #eee。
opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
width: 2, //线度,默认 2。
type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted
// shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。
// shadowColor: "#fff", //阴影颜色。支持的格式同color。
}
},
title:{
fontSize : 20,
// offsetCenter : [0, '60%']//设置完成率位置
},
data: [{
value: 4,
name: '转速(x1000 r/min)'
}],
},
{//中仪表盘
// name: '业务指标',
type: 'gauge',
detail: {formatter:'{value}'},
radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。
center:["50%","55%"],
startAngle:225,
endAngle:-45,
clockWise:true,
min:0,
max:220,
splitNumber: 22, // 仪表盘刻度的分割段数,默认 10。
axisTick: { // 刻度(线)样式。
show: true, // 是否显示刻度(线),默认 true。
splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。
length: 15, // 刻度线长。支持相对半径的百分比,默认 8。
lineStyle: { // 刻度线样式。
color: "auto", //线的颜色,默认 #eee。
opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
width: 1, //线度,默认 1。
type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted
// shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。
// shadowColor: "#fff", //阴影颜色。支持的格式同color。
},
},
axisLine: { // 仪表盘轴线(轮廓线)相关配置。
show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。
lineStyle: { // 仪表盘轴线样式。
// color: colorTemplate1, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']]
// opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
width: 10, //轴线宽度,默认 30。
// shadowBlur: 20, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。
// shadowColor: "#fff", //阴影颜色。支持的格式同color。
}
},
splitLine: { // 分隔线样式。
show: true, // 是否显示分隔线,默认 true。
length: 20, // 分隔线线长。支持相对半径的百分比,默认 30。
lineStyle: { // 分隔线样式。
color: "auto", //线的颜色,默认 #eee。
opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
width: 2, //线度,默认 2。
type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted
// shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。
// shadowColor: "#fff", //阴影颜色。支持的格式同color。
}
},
title:{
fontSize : 25,
// offsetCenter : [0, '60%']//设置完成率位置
},
data: [{
value: 40,
name: '车速(km/h)'
}]
},
{//右上边仪表盘
name: '业务指标',
type: 'gauge',
radius: "40%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。
center:["75%","60%"],
startAngle:-230,
endAngle:-310,
clockWise:true,
min:0,
max:2,
splitNumber: 2, // 仪表盘刻度的分割段数,默认 10。
axisTick: { // 刻度(线)样式。
show: true, // 是否显示刻度(线),默认 true。
splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。
length: 15, // 刻度线长。支持相对半径的百分比,默认 8。
lineStyle: { // 刻度线样式。
color: "auto", //线的颜色,默认 #eee。
opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
width: 1, //线度,默认 1。
type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted
// shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。
// shadowColor: "#fff", //阴影颜色。支持的格式同color。
},
},
axisLine: { // 仪表盘轴线(轮廓线)相关配置。
show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。
lineStyle: { // 仪表盘轴线样式。
// color: colorTemplate1, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']]
// opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
width: 10, //轴线宽度,默认 30。
// shadowBlur: 20, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。
// shadowColor: "#fff", //阴影颜色。支持的格式同color。
}
},
splitLine: { // 分隔线样式。
show: true, // 是否显示分隔线,默认 true。
length: 20, // 分隔线线长。支持相对半径的百分比,默认 30。
lineStyle: { // 分隔线样式。
color: "auto", //线的颜色,默认 #eee。
opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
width: 2, //线度,默认 2。
type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted
// shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。
// shadowColor: "#fff", //阴影颜色。支持的格式同color。
}
},
axisLabel: {
show: true, // 是否显示标签,默认 true。
distance: 3, // 标签与刻度线的距离,默认 5。
formatter: function (v) {
switch (v + '') {
case '0': return 'E';
case '1': return '油表';
case '2': return 'F';
}
}
},
title: { show: false },
detail: { show: false },
data: [{
value: 0.5,
name: '油表'
}]
},
{//右下边仪表盘
name: '业务指标',// 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。
type: 'gauge',// 系列类型
radius: "40%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。
center:["75%","60%"],// 仪表盘位置(圆心坐标)
startAngle:310,// 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。
endAngle:230,// 仪表盘结束角度,默认 -45
clockWise:true,// 仪表盘刻度是否是顺时针增长,默认 true。
min:0,// 最小的数据值,默认 0 。映射到 minAngle。
max:2,// 最大的数据值,默认 100 。映射到 maxAngle。
splitNumber: 2, // 仪表盘刻度的分割段数,默认 10。
axisTick: { // 刻度(线)样式。
show: false, // 是否显示刻度(线),默认 true。
},
axisLine: { // 仪表盘轴线(轮廓线)相关配置。
show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。
lineStyle: { // 仪表盘轴线样式。
// color: colorTemplate1, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']]
// opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
width: 10, //轴线宽度,默认 30。
// shadowBlur: 20, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。
// shadowColor: "#fff", //阴影颜色。支持的格式同color。
}
},
splitLine: { // 分隔线样式。
show: true, // 是否显示分隔线,默认 true。
length: 20, // 分隔线线长。支持相对半径的百分比,默认 30。
lineStyle: { // 分隔线样式。
color: "auto", //线的颜色,默认 #eee。
opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
width: 2, //线度,默认 2。
type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted
// shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。
// shadowColor: "#fff", //阴影颜色。支持的格式同color。
}
},
axisLabel: { // 刻度标签。
show: true, // 是否显示标签,默认 true。
distance: 3, // 标签与刻度线的距离,默认 5。
// color: "#fff", // 文字的颜色,默认 #fff。
// fontSize: 12, // 文字的字体大小,默认 5。
// formatter: "{value}", // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';}
formatter: function (v) {
switch (v + '') {
case '0': return 'H';
case '1': return '水表';
case '2': return 'C';
}
}
},
title: { show: false },
detail: { show: false },
data: [{
value: 1,
name: "水表"
}]
}]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
setInterval(function(){//把option.series[0].data[0].value的值使用random()方法获取一个随机数
option.series[0].data[0].value = (Math.random() * 7).toFixed(2);
option.series[1].data[0].value = (Math.random() * 100).toFixed(2);
option.series[2].data[0].value = (Math.random() * 2).toFixed(2);
option.series[3].data[0].value = (Math.random() * 2).toFixed(2);
myChart.setOption(option, true);
}, 2000);
</script>
</body>
</html>