小程序中使用echarts,案例一:实现仪表盘

echarts-for-weixin 项目提供了一个小程序组件,用这种方式可以方便地使用 ECharts。

下载

echarts-for-weixin ec-canvas
如果你想使用最新版本的echarts可以将 ec-canvas 目录下的 echarts.js 替换为最新版的 ECharts。如果希望减小包体积大小,可以使用自定义构建生成并替换 echarts.js。需要注意的是新版的 ECharts 微信小程序支持微信 Canvas 2d,当用户的基础库版本 >= 2.9.0 且没有设置 force-use-old-canvas=“true” 的情况下,使用新的 Canvas 2d(默认),使用新的 Canvas 2d 可以提升渲染性能,解决非同层渲染问题,强烈建议开启。

使用

在项目根目录下创建components文件夹,将下载的ec-canvas放在components文件夹中。

详情可参考echart官网

使用ec-canvas实现仪表盘案例:

在components中创建gauge组件

<!--components/gauge/gauge.wxml-->
<view class="container">
  <ec-canvas class="ec-canvas" id="mychart-dom-gauge" isUseNewCanvas="{{ true }}" canvas-id="mychart-gauge" ec="{{ ec }}"></ec-canvas>
</view>
// components/gauge/gauge.js
import * as echarts from '../ec-canvas/echarts';

Component({
  /**
   * 组件的属性列表
   */
  properties: {
    speed: {
      type: Number,
      value: 0.00
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    ec: {
      lazyLoad: true, // 懒加载
    }
  },

  lifetimes: {
    attached: function() {
      // 在组件实例进入页面节点树时执行
      this.initchart(this.data.speed)
    },
    detached: function() {
      // 在组件实例被从页面节点树移除时执行
    },
  },
  // 以下是旧式的定义方式,可以保持对 <2.2.3 版本基础库的兼容
  attached: function() {
    // 在组件实例进入页面节点树时执行
    this.initchart(this.data.speed)
  },
  detached: function() {
    // 在组件实例被从页面节点树移除时执行
  },
  /**
   * 数据监听器
   */
  observers: {
    'speed': function(val){
      this.initchart(val)
    }
  },
  /**
   * 组件的方法列表
   */
  methods: {
    loadchart(data){
      // 绑定组件(ec-canvas标签的id)
      let ec_canvas = this.selectComponent('#mychart-dom-gauge');
      ec_canvas.init((canvas,width,height,dpr)=>{
        const chart =echarts.init(canvas, null, {
          width: width,
          height: height,
          devicePixelRatio: dpr // 解决模糊显示的问题
        })
        // echart表格的内容配置
        var option = {
          series: [{
            type: 'gauge',
            radius: '100%', //设置仪表盘的大小
            // 其他配置项
            min: 0,
            max: 1000,
            splitNumber: 4,
            startAngle: 225,//仪表盘最右边的度数
            endAngle: -45,//仪表盘最左边的度数
            axisLine: {
              // 其他配置项
              lineStyle: {
                color: [                    
                  [1, 'rgba(76,104,239,.4)']
                ],
                width: 0,//设置为0,仪表盘进度不显示
                shadowBlur: 0
              }
            },
            progress:{
              // show:false
              // show:true,
              width: 16
            },
            axisLabel: {
              fontFamily: "Roboto-Medium, Roboto",
              fontSize: 14,
              fontWeight: 500
            },
            axisTick: {
              // 仪表盘刻度线的相关样式设置
              splitNumber: 8,
              length: 16,
              lineStyle: {
                color: 'auto',
                width: 3,
                opacity: 0.8
              },
            },
            splitLine: { // 仪表盘刻度距离刻度线的距离
              length: 16,
              lineStyle: {
                color: ['rgba(76,104,239,0)'],
                width: 3,
                opacity: 0
              }
            },
            pointer:{//仪表盘指针的样式设置
              show:false
            },
            detail: {
              // 仪表盘详情配置
              offsetCenter: ['0', '0'],
              textStyle: {
                fontSize: 36
              },
              // lineHeight: 40,
              valueAnimation: true,
              formatter: function(value) {
                return "{value|" + value.toFixed(2) +"}\n{unit|Mbps}";//设置值加单位
              },
              rich: {
                value: {
                  fontSize: 36,
                  fontFamily: 'Roboto-Medium, Roboto',
                  fontWeight: 500,
                  color: "rgba(255,255,255, 1)"
                },
                unit: {
                  fontSize: 16,
                  fontWeight: 400,
                  fontFamily: 'PingFangSC-Regular, PingFang SC',
                  color: "rgba(255,255,255,0.6)",
                  padding: [25, 0, 0, 0]//设置单位的距离
                }
              }
            },
            data: [{
              value: data,
            }]
          }]
        }
        let baifen = option.series[0].data[0].value / option.series[0].max
        option.series[0].axisLine.lineStyle.color.unshift([baifen,'rgb(76,104,239)'])
        chart.setOption(option);
        return chart;
      })
    },
    initchart(data){
      // 传递后台数据到图表中,进行懒加载图表
      this.loadchart(data);
    },
  }
})
{
  "component": true,
  "usingComponents": {
    "ec-canvas": "/components/ec-canvas/ec-canvas"
  }
}
/* components/gauge/gauge.wxss */
.container,.ec-canvas{
  width: 100%;
  height: 100%;
}

在页面中使用gauge组件

{
  "usingComponents": {
    "my-gauge": "/components/gauge/gauge"
  }
}
Page({

  /**
   * 页面的初始数据
   */
  data: {
    speed: 0
  },
})
<view class="gauge">
  <my-gauge speed="{{speed}}"></my-gauge>
</view>
.gauge{
  width: 570rpx;
  height: 570rpx;
}

至此实现仪表盘就结束了,当然你在项目中还是需要根据实际情形来处理。
效果图

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是一个简单的使用 Echarts 实现仪表盘的代码示例: ``` <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ECharts 仪表盘示例</title> <script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script> </head> <body> <div id="chart" style="width: 600px; height: 400px;"></div> <script> // 基于准备好的dom,初始化echarts实例 var myChart = echarts.init(document.getElementById('chart')); // 指定表的配置项和数据 var option = { tooltip: { formatter: "{a} <br/>{b} : {c}%" }, series: [ { name: '业务指标', type: 'gauge', detail: {formatter:'{value}%'}, data: [{value: 50, name: '完成率'}] } ] }; // 使用刚指定的配置项和数据显示表 myChart.setOption(option); </script> </body> </html> ``` 这个示例使用Echarts 的 `gauge` 类型,通过设置 `detail` 属性来显示指针的值。你可以根据需要调整参数来满足你的需求。 ### 回答2: ECharts 是一款基于 JavaScript 的数据可视化库,可以帮助用户通过简洁、直观的方式展示数据。要实现一个仪表盘,可以根据 ECharts 的官方文档和示例进行操作。 首先,需要引入 ECharts 的库文件,并创建一个容器用于放置仪表盘表。可以使用如下代码: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>仪表盘示例</title> <script src="https://cdn.jsdelivr.net/npm/echarts@4.8.0/dist/echarts.min.js"></script> </head> <body> <div id="chartContainer" style="width: 600px; height: 400px;"></div> <script> // 使用 ECharts 初始化表 var chart = echarts.init(document.getElementById('chartContainer')); // 定义仪表盘的配置项和数据 var option = { series: [ { type: 'gauge', detail: {show: false}, data: [{value: 50, name: '完成率'}] } ] }; // 将配置项应用于表 chart.setOption(option); </script> </body> </html> ``` 在上述代码,`<script>` 标签的 JavaScript 部分用于初始化表、定义仪表盘的配置项和数据,并将配置项应用于表。`chartContainer` 是用于放置表的容器的 ID,可以根据需要进行调整。 在 `option` 配置项,`type` 指定了表的类型为 `gauge`,`detail` 设置了仪表盘的详情显示设置,`data` 数组的对象设置了仪表盘的数据。其 value 表示仪表盘当前显示的数值,name 表示该数据的名称。 运行上述代码,就可以在浏览器看到一个简单的仪表盘表。根据需要,可以根据 ECharts 提供的配置项进行更丰富的设置和样式调整。 ### 回答3: ECharts是一款非常强大的数据可视化工具,我们可以使用实现一个仪表盘。下面是一个使用ECharts绘制仪表盘的示例代码: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>ECharts 仪表盘示例</title> <script src="https://cdn.staticfile.org/echarts/4.7.0/echarts.min.js"></script> </head> <body> <div id="chart" style="width: 400px; height: 300px;"></div> <script> // 初始化echarts实例 var myChart = echarts.init(document.getElementById('chart')); // 配置项 var option = { series: [ { type: 'gauge', detail: {formatter: '{value}%'}, data: [{value: 50, name: '完成率'}] } ] }; // 使用刚指定的配置项和数据显示表 myChart.setOption(option); </script> </body> </html> ``` 在代码我们首先引入了ECharts的库文件,可以通过`<script>`标签的`src`属性来引入。然后在`<div>`标签创建了一个容器,用于显示仪表盘。接着使用JavaScript代码初始化了ECharts实例,并以一个`<div>`元素的id作为参数传入。在配置项定义了一个仪表盘的系列及其数据,其`value`表示完成率,`name`表示名称。最后使用`setOption`方法将配置项传入ECharts实例并显示出来。 通过以上代码,我们可以在页面看到一个简单的仪表盘,其的完成率为50%。你可以根据实际需求进行配置调整,如更改仪表盘的样式、添加更多的数据和指针等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值