Echarts仪表盘刻度显示问题?

刻度改动没有变化:当刻度min:0 max:100时,分数为50时指针在中间,将max改为300后,指针还是指在中间,没有任何变化。

image.png

image.png

const myChart = echarts.init(document.getElementById('min'))
      var option = {
        tooltip: {
          show: false,
        },
        series: [
          {
            name: '刻度',
            type: 'gauge',
            center: ['50%', '65%'],
            radius: '130%',
            min: 0, //最小刻度
            max: 300, //最大刻度
            splitNumber: 10, //刻度数量
            startAngle: 180,
            endAngle: 0,
            axisLine: {
              show: true,
              lineStyle: {
                width: 1,
                color: [
                  [1, 'rgba(0,0,0,0)']
                ],
              },
            }, //仪表盘轴线
            axisLabel: {
              show: false,
              color: '#0ab7ff',
              fontSize: 15,
              distance: -50,
            }, //刻度标签。
            axisTick: {
              show: true,
              splitNumber: 5,
              lineStyle: {
                color: '#0ab7ff',
                width: 1,
              },
              length: -3,
            }, //刻度样式
            splitLine: {
              show: true,
              length: -5,
              lineStyle: {
                color: '#0ab7ff',
              },
            }, //分隔线样式
          },
          {
            type: 'gauge',
            radius: '85%',
            center: ['50%', '65%'],
            splitNumber: 0, //刻度数量
            startAngle: 180,
            endAngle: 0,
            axisLine: {
              show: true,
              lineStyle: {
                width: -30,
                color: [

                  //             颜色渐变函数 前四个参数分别表示四个位置依次为 右上左下
                  [0, new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                    offset: 1,
                    color: '#2CA70F' // 0% 处的颜色
                  }, {
                    offset: 0,
                    color: '#40CEEA' // 100% 处的颜色
                  }], false)],

                  [0.6, new echarts.graphic.LinearGradient(1, 0, 0, 0, [{
                    offset: 1,
                    color: '#40CEEA' // 0% 处的颜色
                  }, {
                    offset: 0,
                    color: '#F2FA64' // 100% 处的颜色
                  }], false)],

                  [1, new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
                    offset: 0.8,
                    color: '#F2FA64' // 0% 处的颜色
                  }, {
                    offset: 0,
                    color: '#fa4e4b' // 100% 处的颜色
                  }], false)],
                ],
              },
            },
            //分隔线样式。
            splitLine: {
              show: false,
            },
            axisLabel: {
              show: false,
            },
            axisTick: {
              show: false,
            },
            pointer: {
              show: true,
              length: '80%',
              width: '2%',
            },
            title: {
              show: true,
              offsetCenter: [0, '45%'], // x, y,单位px
              textStyle: {
                color: '#ddd',
                fontSize: 18,
              },
            },
            // 仪表盘详情,用于显示数据。
            detail: {
              show: true,
              offsetCenter: [0, '0%'],
              color: '#ffffff',
              formatter: function (value) {
                if (value <= 50) {
                  return value + '\n优'
                } else if (value <= 100) {
                  return value + '\n良'
                } else if (value <= 150) {
                  return value + '\n轻度污染'
                } else if (value <= 200) {
                  return value + '\n中度污染'
                } else if (value <= 300) {
                  return value + '\n重度污染'
                } else {
                  return '严重污染'
                }
              },
              textStyle: {
                fontSize:17,
              },
            },
            data: [{
              name: this.airTotalScoreAndMessage.message,
              value: this.airTotalScoreAndMessage.score
            }]
           
          },
          {
            // 仅显示tooltip用
            type: 'pie',
            radius: '90%',
            hoverAnimation: true,
            label: {
              normal: {
                show: false,
                position: 'center',
              },
            },
            labelLine: {
              normal: {
                show: false,
              },
            },
            z: 3,
            zlevel: 0,
            itemStyle: {
              borderWidth: 0,
            },
            data: [{
              value: 50,
              name: '',
              label: {
                normal: {
                  show: false,
                },
              },
              itemStyle: {
                normal: {
                  color: 'transparent',
                },
              },
            },],
          },
        ],
      }
      myChart.setOption(option)
    },
阅读 3.4k
1 个回答

因为你的 minmax 设置错 serise 了,放到第二个里面就可以了。
你的配置项太长了,我就删掉了大部分不相关的属性了:

option = {
  tooltip: {
    show: false,
  },
  series: [
    {
      name: '刻度',
      type: 'gauge',
      center: ['50%', '65%'],
      radius: '130%',
      // 这是外部的刻度 series 并不是你赋值指针值的 series
      min: 0, //最小刻度
      max: 300, //最大刻度
      splitNumber: 10, //刻度数量
      startAngle: 180,
      endAngle: 0,
      // ...
    },
    {
      type: 'gauge',
      radius: '85%',
      center: ['50%', '65%'],
      // 这里才是实际指针的所在的 series
      min: 0, //最小刻度
      max: 300, //最大刻度
      splitNumber: 0, //刻度数量
      startAngle: 180,
      endAngle: 0,
      // ...
    },
  ],
};

截图
以下是完整的 options

option = { 
  tooltip: {
    show: false,
  },
  series: [
    {
      name: '刻度',
      type: 'gauge',
      center: ['50%', '65%'],
      radius: '130%',
      min: 0, //最小刻度
      max: 300, //最大刻度
      splitNumber: 10, //刻度数量
      startAngle: 180,
      endAngle: 0,
      axisLine: {
        show: true,
        lineStyle: {
          width: 1,
          color: [
            [1, 'rgba(0,0,0,0)']
          ],
        },
      }, //仪表盘轴线
      axisLabel: {
        show: false,
        color: '#0ab7ff',
        fontSize: 15,
        distance: -50,
      }, //刻度标签。
      axisTick: {
        show: true,
        splitNumber: 5,
        lineStyle: {
          color: '#0ab7ff',
          width: 1,
        },
        length: -3,
      }, //刻度样式
      splitLine: {
        show: true,
        length: -5,
        lineStyle: {
          color: '#0ab7ff',
        },
      }, //分隔线样式
    },
    {
      type: 'gauge',
      radius: '85%',
      center: ['50%', '65%'],
      min: 0, //最小刻度
      max: 300, //最大刻度
      splitNumber: 0, //刻度数量
      startAngle: 180,
      endAngle: 0,
      axisLine: {
        show: true,
        lineStyle: {
          width: -30,
          color: [

            //             颜色渐变函数 前四个参数分别表示四个位置依次为 右上左下
            [0, new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
              offset: 1,
              color: '#2CA70F' // 0% 处的颜色
            }, {
              offset: 0,
              color: '#40CEEA' // 100% 处的颜色
            }], false)],

            [0.6, new echarts.graphic.LinearGradient(1, 0, 0, 0, [{
              offset: 1,
              color: '#40CEEA' // 0% 处的颜色
            }, {
              offset: 0,
              color: '#F2FA64' // 100% 处的颜色
            }], false)],

            [1, new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
              offset: 0.8,
              color: '#F2FA64' // 0% 处的颜色
            }, {
              offset: 0,
              color: '#fa4e4b' // 100% 处的颜色
            }], false)],
          ],
        },
      },
      //分隔线样式。
      splitLine: {
        show: false,
      },
      axisLabel: {
        show: false,
      },
      axisTick: {
        show: false,
      },
      pointer: {
        show: true,
        length: '80%',
        width: '2%',
      },
      title: {
        show: true,
        offsetCenter: [0, '45%'], // x, y,单位px
        textStyle: {
          color: '#ddd',
          fontSize: 18,
        },
      },
      // 仪表盘详情,用于显示数据。
      detail: {
        show: true,
        offsetCenter: [0, '0%'],
        color: '#ffffff',
        formatter: function (value) {
          if (value <= 50) {
            return value + '\n优'
          } else if (value <= 100) {
            return value + '\n良'
          } else if (value <= 150) {
            return value + '\n轻度污染'
          } else if (value <= 200) {
            return value + '\n中度污染'
          } else if (value <= 300) {
            return value + '\n重度污染'
          } else {
            return '严重污染'
          }
        },
        textStyle: {
          fontSize:17,
        },
      },
      data: [{
        name: 'TEST',
        value: 55
      }]

    },
    {
      // 仅显示tooltip用
      type: 'pie',
      radius: '90%',
      hoverAnimation: true,
      label: {
        normal: {
          show: false,
          position: 'center',
        },
      },
      labelLine: {
        normal: {
          show: false,
        },
      },
      z: 3,
      zlevel: 0,
      itemStyle: {
        borderWidth: 0,
      },
      data: [{
        value: 50,
        name: '',
        label: {
          normal: {
            show: false,
          },
        },
        itemStyle: {
          normal: {
            color: 'transparent',
          },
        },
      },],
    },
  ],
};
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏