温度计的实现,带刻度
配置项如下
//刻度
text = ['35', '36', '37', '38', '39', '40', '41'];
//原始数据
var value = 37.5;
//设置温度计颜色
var mercuryColor = '#fd4d49';
var borderColor = '#fd4d49';
//计算x轴最大值和bar长度
function getAxisMax(data) {
var Max = {};
Max.maxAxis0 = data.length * 20;
Max.maxAxis1 = data.length * 2 - 1;
Max.lenOuterBar = [data.length * 20];
Max.lenInnerBar = [data.length * 20 * 0.99];
return Max;
}
max = getAxisMax(text)
//将原始数据转换为图上显示的数值
function getData(value) {
return [value * 20 + -684.5];
}
var data = getData(value);
//构造显示刻度
function getScale(data) {
scale = [{
value: 0,
label: {
normal: {
formatter: ''
}
}
}];
for (var i in data) {
scale.push({
value: 10,
label: {
normal: {
formatter: data[i]
}
}
});
if (i == (data.length - 1)) {
break;
}
scale.push({
value: 5,
label: {
normal: {
formatter: ''
}
}
});
}
return scale;
}
scale = getScale(text);
option = {
title: {
text: '温度计 x professional edition',
show: false
},
xAxis: [{
show: false,
min: 0,
max: max.maxAxis0
}, {
show: false,
data: [],
min: 0,
max: max.maxAxis1,
}],
yAxis: [{
show: false,
data: [],
}, {
show: false,
data: [],
}, {
show: false,
data: [],
}, {
show: false,
min: -110, //根据容器大小调整此处最小值和最大值,以正常显示刻度
max: 93,
}],
series: [{
name: '条',
type: 'bar',
yAxisIndex: 0,
data: data,
barWidth: 18,
itemStyle: {
normal: {
color: mercuryColor,
barBorderRadius: 40,
}
},
z: 2
}, {
name: '白框',
type: 'bar',
yAxisIndex: 1,
barGap: '-100%',
data: max.lenInnerBar,
barWidth: 28,
itemStyle: {
normal: {
color: '#ffffff',
barBorderRadius: 40,
}
},
z: 1
}, {
name: '外框',
type: 'bar',
yAxisIndex: 2,
barGap: '-100%',
data: max.lenOuterBar,
barWidth: 38,
itemStyle: {
normal: {
color: borderColor,
barBorderRadius: 40,
}
},
z: 0
}, {
name: '圆',
type: 'scatter',
hoverAnimation: false,
data: [0],
yAxisIndex: 0,
symbolSize: 48,
itemStyle: {
normal: {
color: mercuryColor,
opacity: 1,
}
},
z: 2
}, {
name: '白圆',
type: 'scatter',
hoverAnimation: false,
data: [0],
yAxisIndex: 1,
symbolSize: 60,
itemStyle: {
normal: {
color: '#ffffff',
opacity: 1,
}
},
z: 1
}, {
name: '外圆',
type: 'scatter',
hoverAnimation: false,
data: [0],
yAxisIndex: 2,
symbolSize: 70,
itemStyle: {
normal: {
color: borderColor,
opacity: 1,
}
},
z: 0
}, {
name: '刻度',
type: 'bar',
xAxisIndex: 1,
yAxisIndex: 3,
label: {
normal: {
show: true,
position: 'top',
distance: 12,
color: '#525252',
fontSize: 20,
}
},
barGap: '-100%',
data: scale,
barWidth: 5,
itemStyle: {
normal: {
color: borderColor,
barBorderRadius: 10,
}
},
z: 0
}]
};