echarts 仪表盘样式

本文详细介绍了如何使用Echarts库创建一个具有双圆环效果的仪表盘,包括设置基础配置、网格、坐标轴、系列数据等,以及利用markPoint实现指针尾部的圆环效果。此外,还展示了如何通过CSS实现底部圆弧背景的渐变效果,提供了完整的代码示例和最终展示效果。

整体效果如下:

基础配置:

 let evaluation = this.$echarts.init(document.getElementById(id))
      evaluation.setOption({
        grid: {
          top: '6%',
          bottom: '18%',
          left: '3%',
          width: '96%',
          containLabel: true
        },

        xAxis: {
          show: false
        },

        yAxis: { show: false },
        series: seriesData,
        tooltip: {  // 提示设置
        },
        backgroundColor: "rgba(5,11,26,0.90)",
        borderColor: "rgba(5,11,26,0.90)",
        textStyle: {
          color: '#E6F3FF',
          fontWeight: '400',
          fontSize: '12px'
        },

      });
      window.onresize = function () {
        evaluation.resize()
      }

series数据(我的seriesData):

实现中间圆环主要是通过设置指针尾部圆点实现的:markPoint  一共3组数据,在前面2组数据上设置了不同大小,就可以实现双圆环啦

[{
        name: '',
        z: 2,
        type: 'gauge',
        center: ['50%', '50%'],    // 默认全局居中
        radius: '88%', // 半径
        //起始角度。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。
        startAngle: 215,
        //结束角度。
        endAngle: -35,
        data: [66],
        clockwise: true,	//仪表盘刻度是否是顺时针增长
        min: 0,  //配置仪表板的数值范围
        max: 100,
        axisLine: {  // 坐标轴线
          show: false, // 不显示坐标轴线
          lineStyle: { // 属性lineStyle控制线条样式
            color:
              [
                [0.1, '#03B1E5'],
                [0.9, '#03B1E5'],
                [1, '#03B1E5']
              ],
            width: 2,
            shadowColor: '#03B1E5', //默认透明
            shadowBlur: 3 // 阴影
          }
        },

        axisTick: { // 刻度线
          length: 12,// 属性length控制线长
          lineStyle: { // 属性lineStyle控制线条样式
            color: 'auto'//分割线和刻度线与轴线的颜色对应
          }

        },
        splitLine: {// 分隔线
          length: 12, // 属性length控制线长
          lineStyle: {// 属性lineStyle(详见lineStyle)控制线条样式
            color: 'auto',//分割线和刻度线与轴线的颜色对应
            width: 12
          },

        },
        //刻度标签。
        axisLabel: {
          fontSize: 16,
          color: "#03B1E5", // 文字颜色
        },
        pointer: {
          length: '70%',  // 指针长度
          width: 2
        },
        // 指针尾部圆点
        markPoint: {
          symbol: 'circle',
          symbolSize: 68,
          data: [
            //跟你的仪表盘的中心位置对应上,颜色可以和画板底色一样
            { x: '50%', y: '50%', itemStyle: { color: '#003593', borderWidth: 2, borderColor: '#0EB6FF' } }
          ]
        },

        detail: {
          offsetCenter: [0, 0], // 中间文字
          color: "rgba(0,0,0,0)",
        },
        progress: {	//配置数值当前进度条统一样式
          show: true,
          overlap: false,		//多组数据时进度条是否重叠。
          roundCap: true,		//是否在两端显示成圆形。
          clip: true,			//是否裁剪掉超出仪表盘的部分
        },
        anchor: {	 //表盘中指针的固定点统一样式配置
        }
      },
      // 外圆 设置外部坐标曲线样式 刻度线和分割线不显示
      {
        name: '',
        z: 2,
        type: 'gauge',
        center: ['50%', '50%'],    // 默认全局居中
        radius: '95%', // 半径
        //起始角度。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。
        startAngle: 225,
        //结束角度。
        endAngle: -45,
        data: [],
        clockwise: true,	//仪表盘刻度是否是顺时针增长
        min: 0,  //配置仪表板的数值范围
        max: 100,
        axisLine: {  // 坐标轴线
          lineStyle: { // 属性lineStyle控制线条样式
            color:
              [
                [0.1, '#034B91'],
                [0.2, '#0460B5'],
                [0.3, '#0384D1'],
                [0.5, 'rgba(3, 183, 208, 0.6)'],
                [0.7, 'rgba(3, 183, 208, 0.6)'],
                [0.8, '#0384D1'],
                [0.9, '#0460B5'],
                [1, '#034B91']
              ],
            width: 4,
            shadowColor: 'rgba(3, 183, 208, 0.6)', //默认透明
            shadowBlur: 10 // 阴影
          }
        },

        axisTick: { // 刻度线
          length: 0,// 属性length控制线长
          lineStyle: { // 属性lineStyle控制线条样式
            color: 'auto'//分割线和刻度线与轴线的颜色对应
          }

        },
        splitLine: {// 分隔线
          length: 0, // 属性length控制线长
          lineStyle: {// 属性lineStyle(详见lineStyle)控制线条样式
            color: 'auto',//分割线和刻度线与轴线的颜色对应
            width: 12
          },

        },
        //刻度标签。
        axisLabel: {
          fontSize: 10,
          color: "rgba(0,0,0,0)", // 文字颜色
        },
        pointer: {
          length: '70%',  // 指针长度
          width: 0
        },
        // 指针尾部圆点
        markPoint: {
          symbol: 'circle',
          symbolSize: 48,
          data: [
            //跟你的仪表盘的中心位置对应上,颜色可以和画板底色一样
            { x: '50%', y: '50%', itemStyle: { color: '#003593', borderWidth: 2, borderColor: '#0EB6FF' } }
          ]
        },

        detail: {
          offsetCenter: [0, 0], // 中间文字
          color: "rgba(0,0,0,0)",
        },
        progress: {	//配置数值当前进度条统一样式
          show: true,
          overlap: false,		//多组数据时进度条是否重叠。
          roundCap: true,		//是否在两端显示成圆形。
          clip: true,			//是否裁剪掉超出仪表盘的部分
        },
        anchor: {	 //表盘中指针的固定点统一样式配置
        }
      },
      {
        // 内部实心圆  设置背景颜色渐变
        type: 'pie',
        radius: '100%',
        center: ['50%', '50%'],
        z: -1,
        itemStyle: {
          normal: {
            color: new echarts.graphic.RadialGradient(.5, .5, .4, [{
              offset: 0,
              color: '#003493'
            },
            {
              offset: .3,
              color: '#003493'
            },
            {
              offset: .4,
              color: '#002560'
            },
            {
              offset: .5,
              color: '#011434'
            },
            {
              offset: .6,
              color: '#031D41'
            },
            {
              offset: .7,
              color: 'rgba(8, 26, 69,0.6)'
            },
            {
              offset: 1,
              color: 'rgba(8, 26, 69,0.4)'
            }], false),
            label: {
              show: false
            },
            labelLine: {
              show: false
            }
          }
        },
        hoverAnimation: false,
        label: {
          show: false
        },
        tooltip: {
          show: false
        },
        data: [1],

      },
      ],

以上效果如下:

 

最下面的圆弧是单独写的css样式:

在盒子内部再加上一个div:

 <div class="dashboard">
      <div id="intention" ref="intention" style="width: 100%;height:100%;"></div>  // 仪表盘容器
      <div class="bottom-line"></div>  // 设置底部圆弧
    </div>

以下是scss样式:

.dashboard {
// 容器父盒子样式
  margin: 100px auto;
  width: 600px;
  height: 500px;
  position: relative;
  overflow: hidden;
// 底部曲线样式
  .bottom-line {
    position: absolute;
    top: 370px;
    height: 600px;
    width: 600px;
    border: none;
    box-sizing: border-box;
    padding: 4px; // 边框颜色填充范围
    background-image: linear-gradient(#060c1d, #081123), // 填充content-box 
      linear-gradient(to left bottom, #72edff, #0083e7); // 填充padding-box
    // border-image: -webkit-linear-gradient(#72edff, #0083e7) 20 20; // 边框渐变色 设置之后无法设置  border-radius 所以放弃
    background-clip: content-box, padding-box;  // 设置盒子模型
    border-radius: 600px;
  }

  // .bottom-line:hover {
  //   filter: hue-rotate(30deg); //  filter(滤镜) 属性  hue-rotate给图像应用色相旋转。"angle"一值设定图像会被调整的色环角度值。值为0deg,则图像无变化。若值未设置,默认值是0deg。该值虽然没有最大值,超过360deg的值相当于又绕一圈。
  // }
// 伪元素遮挡多余线条
  .bottom-line::after {
    position: absolute;
    top: 14px;
    left: -50px;
    height: 700px;
    width: 700px;
    border-radius: 700px;
    background-color: #060c1d;
    z-index: 1;
    content: '';
  }
}

最后效果如图:

 

### ECharts 仪表盘样式配置示例 在 ECharts 中,可以通过多种方式来定制仪表盘的外观和行为。下面是一个详细的例子,展示了如何设置指针样式、刻度线以及背景颜色等属性。 #### 基本配置项说明 - `series.type`: 设置为 `'gauge'` 来表示这是一个仪表盘类型的图表[^1]。 - `title`: 可以为整个图表添加标题文字[^2]。 - `detail`: 控制数据显示细节,比如字体大小、偏移量等参数[^3]。 #### 完整代码实例 ```javascript option = { title: { text: 'ECharts Gauge Chart', subtext: '', top: 'bottom' }, series: [{ name: "单仪表盘示例", type: 'gauge', // 使用 gauge 类型创建仪表盘 detail: {formatter:'{value}%'}, // 显示百分比形式的数据详情 pointer: { length : '80%', // 指针长度比例 width : 8 // 指针宽度 }, axisLine: { // 刻度线条样式 lineStyle: { color: [[0.2, '#ff4500'],[0.8, '#ffee77'],[1, '#ffffff']],// 不同区间的颜色渐变 width: 30, shadowBlur: 10, shadowColor: '#fff' // 圆环阴影 } }, splitLine: { // 主分隔线样式(大刻度) show: true, length: 30, lineStyle: { width: 2, color: '#999' } }, axisTick: { // 细分隔线样式(小刻度) show: true, length: 8, lineStyle: { color: 'auto' } }, axisLabel: { // 文字标签样式 distance: 15, color: '#999', fontSize: 12 }, data:[ // 数据源 {value: 50} ] }] }; ``` 此段 JavaScript 代码片段定义了一个具有特定样式ECharts 仪表盘,并设置了不同部分的颜色、尺寸和其他视觉特性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值