Echarts雷达图单独设置拐点颜色,边框颜色,区域颜色

html 复制代码
<template>
 <div id="echartBasic"></div>
</template>
<script>
import * as echarts from 'echarts'
export default {
 mounted() {
    var chartDom = document.getElementById('echartBasic')
    var myChart = echarts.init(chartDom)
    const dataObject = [
      {
        name: 'E',
        value: 3000
      },
      {
        name: 'S',
        value: 3000
      },
      {
        name: 'T',
        value: 3000
      },
      {
        name: 'J',
        value: 2000
      },
      {
        name: 'I',
        value: 3000
      },
      {
        name: 'N',
        value: 2500
      },
      {
        name: 'F',
        value: 3500
      },
      {
        name: 'P',
        value: 4000
      }
    ]
    const dataArray = dataObject.map(n => n.value)
    const minNum = Math.min(...dataArray)
    const maxNum = Math.max(...dataArray)
    const zhongNum = (maxNum - minNum) / 3 + minNum
    const option = {
      title: {},
      legend: {
        data: []
      },
      radar: [
        // 虚线
        {
          center: ['50%', '50%'],
          radius: 70,
          shape: 'circle',
          splitNumber: 4,
          color: ['#FFA939'],
          axisName: {
            formatter: '{value}',
            fontSize: 16,
            fontWeight: 'bolder',
            color: 'rgba(1, 242, 182, 1)'
          },
          splitArea: {
            areaStyle: {
              color: ['transparent', 'transparent', 'rgba(114, 172, 209, 0)', 'transparent', 'rgba(114, 172, 209, 0)']
            }
          },
          axisLine: {
            lineStyle: {
              color: '#E3E3E3'
            }
          },
          splitLine: {
            lineStyle: {
              color: '#E3E3E3',
              type: 'dashed' //dashed  solid dotted 射线类型【实线 虚线】
            }
          },
          indicator: dataObject.map(n => ({
            name: n.name,
            max: maxNum,
            color: n.value >= zhongNum ? '#01F2B6' : '#D9D9D9'
          }))
        },
        // 实线
        {
          center: ['50%', '50%'],
          radius: 70,
          indicator: dataObject.map(() => ({max: maxNum})),
          splitNumber: 1,
          shape: 'circle',
          splitArea: {
            show: false
          },
          axisLine: {
            show: false
          },
          splitLine: {
            lineStyle: {
              color: '#E3E3E3',
              type: 'solid',
              width: 4
            }
          }
        }
      ],
      series: [
        {
          name: 'Budget vs spending',
          type: 'radar',
          data: [
            // 真实的
            {
              symbol: 'none',
              value: dataArray,
              itemStyle: {
                normal: {
                  color: 'rgba(25, 255, 198, 0.8)' //拐点颜色
                }
              },
              lineStyle: {
                width: 2,
                labelLine: {
                  color: 'rgba(25, 255, 198, 0.8)' //拐点边框颜色
                }
              },
              areaStyle: {
                // 区域颜色
                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                  {offset: 0, color: 'rgba(171, 255, 129, 1)'},
                  {offset: 1, color: 'rgba(25, 255, 198, 1)'}
                ])
              }
            },
            // 虚假的
            {
              symbol: 'none',
              value: dataObject.map(() => zhongNum),
              itemStyle: {
                normal: {
                  color: 'rgba(182, 235, 255, 0.5)' //拐点颜色
                }
              },
              lineStyle: {
                width: 2,
                labelLine: {
                  color: 'rgba(182, 235, 255, 0.5)' //拐点边框颜色
                }
              },
              areaStyle: {
                // 区域颜色
                color: new echarts.graphic.LinearGradient(0, 0, 0, 0.1, [
                  {offset: 0, color: 'rgba(226, 249, 255, 0.5)'},
                  {offset: 1, color: 'rgba(182, 235, 255, 0.5)'}
                ])
              }
            },
            // 拐点
            ...dataObject.map((n, index) => {
              return {
                type: 'radar',
                // 除了当前的,其他的设置无限大
                value: dataObject.map((_, i) => (i == index ? maxNum : maxNum * 100)),
                z: 2,
                itemStyle: {
                  normal: {
                    color: n.value >= zhongNum ? '#01F2B6' : '#D9D9D9'
                  }
                },
                lineStyle: {
                  width: 0,
                  labelLine: {
                    show: false //隐藏标示线
                  }
                }
              }
            })
            // {
            //   value: dataObject.map(() => maxNum),
            //   itemStyle: {
            //     normal: {
            //       color: '#01F2B6'
            //     }
            //   },
            //   lineStyle: {
            //     width: 0,
            //     labelLine: {
            //       show: false //隐藏标示线
            //     }
            //   }
            // }
          ]
        }
      ]
    }
    option && myChart.setOption(option)
  },
}
</script>
<style>
   #echartBasic {
      width: 210px;
      height: 210px;
      margin: 10px auto 8px auto;
    }
</style>
相关推荐
吞掉星星的鲸鱼40 分钟前
使用高德api实现天气查询
前端·javascript·css
....49244 分钟前
Vue3 + Element Plus + AntV X6 实现拖拽树组件
javascript·vue.js·elementui·antvx6
花花鱼3 小时前
node-modules-inspector 可视化node_modules
前端·javascript·vue.js
TDengine (老段)5 小时前
TDengine 中的关联查询
大数据·javascript·网络·物联网·时序数据库·tdengine·iotdb
再学一点就睡6 小时前
大文件上传之切片上传以及开发全流程之前端篇
前端·javascript
每次的天空7 小时前
Android学习总结之算法篇四(字符串)
android·学习·算法
難釋懷8 小时前
JavaScript基础-移动端常见特效
开发语言·前端·javascript
x-cmd8 小时前
[250331] Paozhu 发布 1.9.0:C++ Web 框架,比肩脚本语言 | DeaDBeeF 播放器发布 1.10.0
android·linux·开发语言·c++·web·音乐播放器·脚本语言
还是鼠鼠8 小时前
Node.js全局生效的中间件
javascript·vscode·中间件·node.js·json·express
自动花钱机8 小时前
WebUI问题总结
前端·javascript·bootstrap·css3·html5