温度计

描述:当前是关于Echarts图表中的 示例。
 
             /*****设置*****/
 var TP_name="温度";
 var TP_value = -60;//值
 var min = 0;//最小刻度
 var max = 1000;//最大刻度
 var offset = 50;//负数设置
 var step = max/5;//步长
 var range = [0,200,500]//范围[高,中,低]
 var unit = '°C';//单位
 /**************/
 var scale = step/20;//比例
 var kd = [];
 var Gradient = [];
 var leftColor = '';
 var showValue = '';
 var len = max+(scale*15);//刻度+15
 var TP_txt = '';
 // 刻度使用柱状图模拟,短设置1,长的设置3;构造一个数据
 for (var i = 0; i <= len; i++) {
     if (i < (min+(scale*10)) || i > (max+(scale*10))) {
         kd.push('')
     } else {
         if ((i - (scale*10)) % step === 0) {
             kd.push('-3');
         } else if ((i - (scale*10)) % (step/5) === 0) {
             kd.push('-1');
         } else {
             kd.push('');
         }
     }

 }
 //中间线的渐变色和文本内容
 if (TP_value > range[2]) {
     Gradient.push({
         offset: 0,
         color: '#93FE94'
     }, {
         offset: 0.5,
         color: '#E4D225'
     }, {
         offset: 1,
         color: '#E01F28'
     })
 } else if (TP_value > range[1]) {
     Gradient.push({
         offset: 0,
         color: '#93FE94'
     }, {
         offset: 1,
         color: '#E4D225'
     })
 } else {
     Gradient.push({
         offset: 1,
         color: '#93FE94'
     })
 }
 if (TP_value > (max-offset+(scale*2))) {
     showValue = max-offset+(scale*2);
 } else if (TP_value < min-offset) {
     showValue = min-offset;
 } else {
     showValue = TP_value
 }
 
 offset = offset+(scale*10);//负数设置+10
 leftColor = Gradient[Gradient.length - 1].color;
 // 因为柱状初始化为0,温度存在负值,所以加上负值60和空出距离10
 var option = {
     backgroundColor: '#0C2F6F',
     grid:{
         top:'10%',
         bottom:'15%',
     },
     yAxis: [{
         show: false,
         data: [],
         min: 0,
         max: len,
         axisLine: {
             show: false
         }
     }, {
         show: false,
         min: 0,
         max: 50,
     }],
     xAxis: [{
         show: true,
         min: -10,
         max: 80,
        axisTick: 'none',
        axisLine: 'none',
        offset: 40,
        axisLabel: {
            textStyle: {
                color: '#ffffff',
                fontSize: '24',
            },
        },
        data: [TP_name],
     }, {
         show: true,
         min: -10,
         max: 80,
        axisTick: 'none',
        axisLine: 'none',
        offset: 0,
        axisLabel: {
            textStyle: {
                color: '#66b1fd',
                fontSize: '24',
            },
        },
        data: [TP_value+unit],
        z: 9,
     }, {
         show: false,
         min: -10,
         max: 80,
         data: []
     }, {
         show: false,
         min: -5,
         max: 80,

     }],
     series: [{
         name: '条',
         type: 'bar',
         // 对应上面XAxis的第一个对)象配置
         xAxisIndex: 0,
         data: [{
             value: (showValue + offset),
         }],
         barWidth: 18,
         itemStyle: {
             normal: {
                 color: new echarts.graphic.LinearGradient(0, 1, 0, 0, Gradient)
             }
         },
         z: 2
     }, {
         name: '白框',
         type: 'bar',
         xAxisIndex: 1,
         barGap: '-100%',
         data: [len-scale],
         barWidth: 28,
         itemStyle: {
             normal: {
                 color: '#0C2E6D',
                 barBorderRadius: 50,
             }
         },
         z: 1
     }, {
         name: '外框',
         type: 'bar',
         xAxisIndex: 2,
         barGap: '-100%',
         data: [len],
         barWidth: 38,
         itemStyle: {
             normal: {
                 color: '#4577BA',
                 barBorderRadius: 50,
             }
         },
         z: 0
     }, {
         name: '圆',
         type: 'scatter',
         hoverAnimation: false,
         data: [0],
         xAxisIndex: 0,
         symbolSize: 48,
         itemStyle: {
             normal: {
                 color: '#93FE94',
                 opacity: 1,
             }
         },
         z: 2
     }, {
         name: '白圆',
         type: 'scatter',
         hoverAnimation: false,
         data: [0],
         xAxisIndex: 1,
         symbolSize: 60,
         itemStyle: {
             normal: {
                 color: '#0C2E6D',
                 opacity: 1,
             }
         },
         z: 1
     }, {
         name: '外圆',
         type: 'scatter',
         hoverAnimation: false,
         data: [0],
         xAxisIndex: 2,
         symbolSize: 70,
         itemStyle: {
             normal: {
                 color: '#4577BA',
                 opacity: 1,
             }
         },
         z: 0
     }, {
         name: '刻度',
         type: 'bar',
         yAxisIndex: 0,
         xAxisIndex: 3,
         label: {
             normal: {
                 show: true,
                 position: 'left',
                 distance: 10,
                 color: 'white',
                 fontSize: 14,
                 formatter: function(params) {
                     if (params.dataIndex > (max+(scale*10)) || params.dataIndex < (min+(scale*10))) {
                         return '';
                     } else {
                         if ((params.dataIndex - (scale*10)) % step === 0) {
                             return params.dataIndex - offset;
                         } else {
                             return '';
                         }
                     }
                 }
             }
         },
         barGap: '-100%',
         data: kd,
         barWidth: 1,
         itemStyle: {
             normal: {
                 color: 'white',
                 barBorderRadius: 120,
             }
         },
         z: 0
     }]
 };