根据社区的作品基础上改的.
在社区找了很久找不到可以根据值变色的模版.于是用环柱图试着改了下 .希望能提供帮助
配置项如下
let angle = 0; //角度,用来做简单的动画效果的
let value = 55.33;
option = {
backgroundColor: '',
title: {
text: '{a|' + '噪声' + '\n\n}' + '{c|' + value + '}',
x: 'center',
y: 'center',
textStyle: {
rich: {
a: {
fontSize: 16,
color: '#3DABFF',
},
c: {
fontSize: 20,
color: 'black',
// padding: [5,0]
},
},
},
},
angleAxis: {
show: false,
},
radiusAxis: {
type: 'category',
show: false,
data: [0, 0, 0, '周四'],
},
polar: {},
series: [
{
name: '',
type: 'gauge',
radius: '78%',
center: ['50%', '50%'],
startAngle: 0,
endAngle: 359.9,
zlevel: 1,
splitNumber: 8,
hoverAnimation: true,
axisTick: {
show: false,
},
splitLine: {
length: '21%',
lineStyle: {
width: 2,
color: '#0B1234',
},
},
axisLabel: {
show: false,
},
pointer: {
show: false,
},
axisLine: {
lineStyle: {
opacity: 0,
},
},
detail: {
show: false,
},
data: [
{
value: 0,
name: '',
},
],
},
{
name: 'ring5',
type: 'custom',
coordinateSystem: 'none',
renderItem: function (params, api) {
return {
type: 'arc',
shape: {
cx: api.getWidth() / 2,
cy: api.getHeight() / 2,
r: (Math.min(api.getWidth(), api.getHeight()) / 2) * 0.82,
startAngle: ((0 + angle) * Math.PI) / 180,
endAngle: ((90 + angle) * Math.PI) / 180,
},
style: {
stroke: '#0CD3DB',
fill: 'transparent',
lineWidth: 1.5,
},
silent: true,
};
},
data: [0],
},
{
name: 'ring5',
type: 'custom',
coordinateSystem: 'none',
renderItem: function (params, api) {
return {
type: 'arc',
shape: {
cx: api.getWidth() / 2,
cy: api.getHeight() / 2,
r: (Math.min(api.getWidth(), api.getHeight()) / 2) * 0.82,
startAngle: ((180 + angle) * Math.PI) / 180,
endAngle: ((270 + angle) * Math.PI) / 180,
},
style: {
stroke: '#0CD3DB',
fill: 'transparent',
lineWidth: 1.5,
},
silent: true,
};
},
data: [0],
},
{
type: 'bar',
data: [0, 0, 0, value],
coordinateSystem: 'polar',
stack: 'a',
itemStyle: {
normal: {
//这里是重点
color: function (params) {
if (params.value > 0 && params.value <= 50) {
return 'red';
} else return 'green';
},
},
},
},
{
type: 'bar',
data: [0, 0, 0, 100 - value],
coordinateSystem: 'polar',
stack: 'a',
},
],
};
//获取圆上面某点的坐标(x0,y0表示坐标,r半径,angle角度)
function getCirlPoint(x0, y0, r, angle) {
let x1 = x0 + r * Math.cos((angle * Math.PI) / 180);
let y1 = y0 + r * Math.sin((angle * Math.PI) / 180);
return {
x: x1,
y: y1,
};
}
setInterval(function () {
angle = angle + 3;
myChart.setOption(option, true);
}, 100);