echarts雷达图在区域刻度上显示文字

echarts雷达图 yekong

echarts雷达图在区域刻度上显示文字

echarts项目开发中,需要显示雷达图,雷达图要求在刻度上显示内容,今天我们将实现方法记录下来。

echarts版本

 "echarts": "^5.4.1",

首选在刻度上显示内容

我们只需要在radar下面增加axisLabel设置show为true就可以显示内容。

radar: {
  axisLabel: {
    show: true,
    color: '#fff',
  },

首选在刻度上显示内容

内容显示处理

上面我们把数值在刻度轴上显示出来了,但是这并不是我们想要的,我们只需要其中指定的一条轴上显示数字即可,其他轴都不显示,这里我们有很多数据,我们只需要在indicator中除了我们需要显示那条轴显示axisLabel其他轴都不显示axisLabel,这样我们就可以只显示一条轴了。

var indicator = [
{
  name: '车钩',
  max: 100
},
{
  name: '车门',
  max: 100,
  axisLabel: {
    show: false
  }
},
{
  name: '索引',
  max: 100,
  axisLabel: {
    show: false
  }
}]

完整实例代码

    drawLine() {
      var that = this
      var indicator = [
        {
          name: '车钩',
          max: 100
        },
        {
          name: '车门',
          max: 100,
          axisLabel: {
            show: false
          }
        },
        {
          name: '索引',
          max: 100,
          axisLabel: {
            show: false
          }
        },
        {
          name: '辅助供电',
          max: 100,
          axisLabel: {
            show: false
          }
        },
        {
          name: '制动',
          max: 100,
          axisLabel: {
            show: false
          }
        },
        {
          name: '乘客信息',
          max: 100,
          axisLabel: {
            show: false
          }
        },
        {
          name: '空调',
          max: 100,
          axisLabel: {
            show: false
          }
        },
        {
          name: '控制',
          max: 100,
          axisLabel: {
            show: false
          }
        },
        {
          name: '转向架',
          max: 100,
          axisLabel: {
            show: false
          }
        },
        {
          name: '车体',
          max: 100,
          axisLabel: {
            show: false
          }
        }]
      var dataValue = [50, 60, 70, 80, 50, 70, 80, 50, 70]
      window.addEventListener('resize', this.drawLine)
      let myChart = echarts.init(this.$refs.echarts)

      function contains(arr, obj) {
        var i = arr.length;
        while (i--) {
          if (arr[i].name === obj) {
            return i;
          }
        }
        return false;
      }

      var option = {
        radar: {
          axisLabel: {
            show: true,
            color: '#fff',
          },
          radius: '70%',
          center: ['50%', '50%'],
          startAngle: 35,
          splitNumber: 4,
          triggerEvent: true,
          name: {
            textStyle: {
              rich: {
                a: {
                  color: 'rgba(255, 255, 255, 1)',
                  fontSize: FontChart(16),
                  padding: [10, 10],
                }
              },
            },
            formatter: (value) => {
              let i = contains(indicator, value); // 处理对应要显示的样式
              return '{a|' + value + '}'
            },
          },
          nameGap: '1',
          indicator: indicator,
          axisLine: {lineStyle: {color: '#328996'}},
          splitLine: {
            lineStyle: {
              width: 1,
              color: ['rgba(110, 49, 27, 1.00)', 'rgba(96, 78, 26, 1.00)',
                'rgba(12, 95, 128, 1.00)', 'rgba(10, 74, 136, 1.00)', 'rgba(3, 176, 184, 1.00)']
            }
          },
          splitArea: {
            areaStyle: {
              color: {
                type: 'radial',
                x: 0.5,
                y: 0.5,
                r: 0.5,
                colorStops: [{
                  offset: 0, color: 'rgba(3, 176, 184, 1)' // 0% 处的颜色,外圈颜色
                }, {
                  offset: 1, color: 'rgba(110, 49, 27, 0)' // 100% 处的颜色,内圈颜色,透明度为0实现渐变效果
                }],
                globalCoord: false // 缺省为 false
              }
            }
          }
        },
        series: [
          {
            name: '子系统评价结果统计',
            type: 'radar',
            areaStyle: {
              normal: {
                color: new echarts.graphic.RadialGradient(0.5, 0.5, 1, [
                  {
                    offset: 0,
                    color: 'rgba(51, 155, 78, 0.1)' // 内圈颜色,透明度为0.1
                  },
                  {
                    offset: 0.5,
                    color: 'rgba(51, 155, 78, 1)' // 外圈颜色,透明度为1
                  },
                  {
                    offset: 1,
                    color: 'rgba(51, 155, 78, 1)' // 外圈颜色,透明度为1
                  }
                ], false),
                opacity: 1 // 区域透明度
              }
            },
            symbol: 'circle',
            symbolSize: 0,
            itemStyle: {
              color: '#008b51',
              borderColor: '#008b51',
              borderWidth: 20
            },
            lineStyle: {
              color: 'rgba(246, 220, 148, 0)',
              width: 2
            },
            label: {
              show: false
            },
            data: [dataValue]
          }]
      };
      myChart.clear()
      myChart.resize()
      myChart.setOption(option)
    },
喜欢