echarts动态循环出多个样式一样数据不同的仪表盘

 这样就可以了

 <div class="pie"  :style="{ width: '320px', height: '160px' }"> </div>
   getIns() {
      indexInstrument().then(res => {

        this.insList = res.rows.map(({ shu }) => ({
          shu: shu
        }))

        this.$nextTick(() => {
          const myEchart = document.getElementsByClassName("pie");

          for (let index = 0; index < this.title.length; index++) {
            this.insList.forEach((value, index) => {
              value['name'] = this.title[index].name
              value['color'] = this.title[index].color
            })

            var myChart = echarts.init(myEchart[index]); //初始化echarts实例要在for循环内

            let option = {
              title: {
                text: '{num|' + this.insList[index].shu + '%}',
                x: '50%',
                y: '53%',
                textAlign: 'center',
                textStyle: {
                  rich: {
                    num: {
                      fontWeight: '700',
                      color: this.insList[index].color,
                      fontFamily: '微软雅黑',
                      fontSize: 18,
                    },
                  },
                },
              },
              series: [
                {
                  type: 'gauge',
                  radius: '110%', // 1行3个
                  center: ['50%', '70%'],
                  splitNumber: 10,
                  // min: 0,
                  max: 100,
                  startAngle: 180,
                  endAngle: 0,
                  z: 99,
                  // 线
                  axisLine: {
                    lineStyle: {
                      width: 0.5,
                      color: [[1, 'rgba(255,255,255,0)']],
                    },
                    detail: {
                      formatter: '{value}',
                    },
                    data: [
                      {
                        value: 50,
                        name: 'SCORE',
                      },
                    ],
                  },
                  //刻度标签。
                  axisTick: {
                    show: true,
                    splitNumber: 3, //刻度的段落数
                    lineStyle: {
                      color: this.insList[index].color,
                      width: 1, //刻度的宽度
                      shadowColor: this.insList[index].color,
                      shadowBlur: 1,
                    },
                    length: 1, //刻度的长度
                  },
                  splitLine: {
                    //文字和刻度的偏移量
                    show: true,
                    length: -3, //长度
                    lineStyle: {
                      color: this.insList[index].color,
                      width: 1,
                    },
                  },
                  // //刻度线文字
                  axisLabel: {
                    show: true,
                    color: this.insList[index].color,
                    fontSize: 8,
                    distance: -15,
                  },
                  data: [
                    {
                      value: this.insList[index].shu,
                      name: 'SCORE',
                      itemStyle: {
                        color: this.insList[index].color,
                      },
                    },
                  ],
                  pointer: {
                    show: true,
                    length: '12%',
                    radius: '50%',
                    width: 2.5, //指针粗细
                    offsetCenter: [0, -62]
                  },
                  detail: {
                    show: false
                  },
                  title: {
                    // 仪表盘标题。
                    show: false,
                  },
                },
                {
                  name: this.insList[index].name,
                  type: 'pie',
                  radius: ['65%', '83%'],
                  center: ['50%', '70%'],
                  startAngle: 180,
                  endAngle: 0,
                  color: [
                    {
                      type: 'linear',
                      x: 0,
                      y: 0,
                      x2: 0,
                      y2: 1,
                      colorStops: [
                        {
                          offset: 0,
                          color: this.insList[index].color.replace(/[\d\.]+(?=\))/, '0.1'), // 0% 处的颜色
                        },
                        {
                          offset: 0.5,
                          color: this.insList[index].color.replace(/[\d\.]+(?=\))/, '0.5'),
                        },
                        {
                          offset: 1,
                          color: this.insList[index].color.replace(/[\d\.]+(?=\))/, '1'), // 100% 处的颜色

                        }
                      ],
                    },
                    'transparent',
                  ],
                  hoverAnimation: true,
                  legendHoverLink: false,
                  z: 10,
                  labelLine: {
                    normal: {
                      show: false,
                    },
                  },
                  data: [
                    {
                      value: this.insList[index].shu,
                    },
                    {
                      value: 100 - this.insList[index].shu,
                    },
                  ],
                },
                {
                  type: 'pie',
                  hoverAnimation: false,
                  label: {
                    show: false,
                  },
                  center: ['50%', '70%'],
                  radius: ['0%', '60%'],
                  startAngle: 180,
                  data: [
                    {
                      value: 100,
                      itemStyle: {
                        normal: {
                          color: {
                            type: 'radial',
                            x: 0.5,
                            y: 0.5,
                            r: 0.5,
                            colorStops: [
                              { offset: 0, color: this.insList[index].color.replace(/[\d\.]+(?=\))/, '0.5') },
                              { offset: 1, color: this.insList[index].color.replace(/[\d\.]+(?=\))/, '1') },
                            ],
                          },
                          opacity: 0.2,
                        },
                      },
                    },
                    {
                      value: 100,
                      color: 'transparent',
                    },
                  ],
                },
              ],

            };
            myChart.setOption(option);
          }
        })

      })
    },

 

每个颜色不一样是之前写好再重构进去的 ,文字,刻度线 ,title,渐变都用的这个颜色

用ragb的原因是方便做渐变的时候更改最后一个透明度的值

 

      title: [{
        name: "管理仪器总数",
        color: "rgba(52, 112, 244, 1)"
      },
      {
        name: "正在使用数量",
        color: "rgba(46, 203, 236, 1)"
      },
      {
        name: '可以使用数量',
        color: "rgba(57, 219, 93, 1)"
      },
      {
        name: '设备离线数量',
        color: "rgba(250, 142, 46, 1)"
      },
      ],

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 echarts 的 series 和 data 属性来动态创建多条曲线。 首先,需要准备好一个空的 echarts 实例,并且定义好需要展示的数据格式。例如: ```javascript var chart = echarts.init(document.getElementById('chart')); var option = { xAxis: { type: 'category', data: [] }, yAxis: { type: 'value' }, series: [] }; chart.setOption(option); ``` 接下来,可以根据需要创建多条曲线。例如,创建两条曲线: ```javascript // 第一条曲线的数据 var data1 = []; for (var i = 0; i < 10; i++) { data1.push(Math.random() * 10); } // 第二条曲线的数据 var data2 = []; for (var i = 0; i < 10; i++) { data2.push(Math.random() * 10); } // 定义第一条曲线 var series1 = { type: 'line', data: data1 }; // 定义第二条曲线 var series2 = { type: 'line', data: data2 }; // 将曲线添加到 option 中 option.series.push(series1); option.series.push(series2); // 更新 option,并且刷新 echarts 实例 chart.setOption(option); ``` 以上代码会在 echarts 实例中动态创建两条曲线,并且数据是随机生成的。可以根据需要修改数据和曲线的属性。 ### 回答2: echarts是一款优秀的数据可视化库,可以通过它来创建多条曲线并实现动态效果。首先,我们需要在HTML页面中引入echarts的脚本文件。然后,创建一个div容器作为echarts的画布。 接下来,利用JavaScript动态生成数据并将其传入echarts中。我们可以使用一个数组来存储多条曲线的数据,每一条曲线对应一个对象,其中包含x轴和y轴的值。在创建数据时,可以使用循环来实现批量生成。 接着,创建echarts实例并进行配置,设置表的标题、x轴和y轴的名称等信息。配置项中需要指定表类型为曲线,同时可以设置动画效果的参数。 最后,将数据和配置项传入echarts实例中,并通过setOption方法进行渲染。此时,就可以在页面上看到多条曲线以动态的方式显示来。 需要注意的是,echarts提供了丰富的配置项和API,可以根据具体需求进行调整和扩展。例如,可以自定义曲线的样式、添加标记点、设置动画的速度等,以使表更加美观和有趣。 总之,通过echarts可以很方便地实现动态创建多条曲线的效果,为数据分析和展示提供了非常强大的工具。 ### 回答3: echarts是一款强大的可视化表库,可以通过动态创建多条曲线来展示多个数据集的变化。 首先,我们需要引入echarts库和相关依赖。 ```html <script src="https://cdn.jsdelivr.net/npm/echarts@5.1.2/dist/echarts.min.js"></script> ``` 然后,我们可以创建一个空的div元素作为容器,用于显示表。 ```html <div id="chart" style="width: 500px; height: 300px;"></div> ``` 接下来,我们可以使用JavaScript动态创建多条曲线的数据和选项配置。 ```javascript // 创建数据 var data = [ { name: '曲线1', values: [10, 20, 30, 40, 50] }, { name: '曲线2', values: [20, 30, 40, 50, 60] }, { name: '曲线3', values: [30, 40, 50, 60, 70] } ]; // 创建表选项 var option = { legend: {}, tooltip: {}, xAxis: { data: ['A', 'B', 'C', 'D', 'E'] }, yAxis: {}, series: [] }; // 添加曲线数据 data.forEach(function(item) { option.series.push({ name: item.name, type: 'line', data: item.values }); }); // 创建表 var chart = echarts.init(document.getElementById('chart')); chart.setOption(option); ``` 以上代码中,我们首先创建了一个data数组,每个元素包含曲线的名称和对应的数值数组。然后,创建了一个option对象作为表的选项配置,包含图例、提示框、x轴和y轴等配置。在添加曲线数据时,使用forEach方法遍历data数组,将每条曲线的名称和数值添加到option的series中。最后,使用echarts.init初始化表,并使用chart.setOption方法设置选项。这样就可以动态创建多条曲线了。 注意,以上代码仅为示例,实际使用时需要根据具体需求进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值