uniapp开发微信小程序引入echarts

背景

uniapp是一个跨端开发框架,可以使用vue开发可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。

最近在写一个分析的需求的时候,小程序端需要使用到图表做可视化呈现。特此记录使用uniapp开发微信小程序引入echarts的过程。

引入组件

想在uniapp中使用echarts需要先引入echarts。我们可以到uniapp官方插件市场(链接见文末)搜索echarts-for-wx

在这里插入图片描述

搜索到结果后可以下载zip包自己手动引入,也可以点击”下载插件并导入HBuilderX“自动引入。这里我们选择下载zip包手动引入。点击下载插件ZIP,下载完成之后插件压缩包目录如下:
在这里插入图片描述

如图所示,我们只需要把yanhao-echarts-for-wx_1.0.3.zip解压,然后把uni-ec-canvas目录整个复制到你uniapp工程的components目录下。引入正确的目录层级如上图所示。

使用echarts组件

完成上述引入操作后我们就可以在我们的程序中使用echarts了。下载的插件压缩包yanhao-echarts-for-wx_1.0.3下也有示例程序在examples下。这里给出multi-charts.vue示例代码:

<template>
  <view>
    <uni-ec-canvas
      class="uni-ec-canvas"
      id="line-chart"
      canvas-id="multi-charts-line"
      :ec="ec"
    ></uni-ec-canvas>

    <uni-ec-canvas
      class="uni-ec-canvas"
      id="pie-chart"
      canvas-id="multi-charts-pie"
      :ec="ec2"
    ></uni-ec-canvas>
  </view>
</template>

<script>
import uniEcCanvas from "@/components/uni-ec-canvas/uni-ec-canvas";
export default {
  data() {
    return {
      ec: {
        option: {
          title: {
            text: ""
          },
          tooltip: {
            trigger: "axis",
            formatter: "{b}\r\n{c0}人",
            axisPointer: {
              type: "line",
              axis: "x",
              label: {
                backgroundColor: "#000000"
              }
            }
          },
          grid: {
            left: "6%",
            right: "6%",
            top: "6%",
            bottom: "6%",
            containLabel: true
          },
          xAxis: {
            type: "category",
            boundaryGap: false,
            data: ["2-12", "2-14", "2-16", "2-18", "2-20", "2-22", "2-24"],
            axisLine: {
              // y轴
              show: false
            },
            axisTick: {
              // y轴刻度线
              show: false
            },
            splitLine: {
              // 网格线
              show: false
            }
          },
          yAxis: {
            type: "value",
            axisLine: {
              // y轴
              show: false
            },
            axisTick: {
              // y轴刻度线
              show: false
            },
            splitLine: {
              // 网格线
              show: false
            }
          },
          series: [
            {
              name: "浏览量",
              type: "line",
              smooth: true,
              areaStyle: {
                color: {
                  type: "linear",
                  x: 0,
                  y: 0,
                  x2: 0,
                  y2: 1,
                  colorStops: [
                    {
                      offset: 0,
                      color: "#E50113" // 0% 处的颜色
                    },
                    {
                      offset: 1,
                      color: "#fff" // 100% 处的颜色
                    }
                  ],
                  global: false // 缺省为 false
                }
              },
              lineStyle: {
                color: "#EF5959"
              },
              data: [120, 132, 101, 134, 90, 230, 210]
            }
          ]
        }
      },
      ec2: {
        option: {
          title: {
            text: "7,5950",
            left: "center",
            top: "40%",
            subtext: "客户总数",
            subtextStyle: {
              color: "#959595",
              fontSize: 12,
              align: "center"
            },
            textStyle: {
              color: "#19193E",
              fontSize: 23,
              align: "center"
            }
          },
          series: [
            {
              name: "访问来源",
              type: "pie",
              radius: ["40%", "60%"],
              label: {
                position: "outside",
                color: "#19193E",
                normal: {
                  show: false
                },
                emphasis: {
                  show: true
                },
                fontSize: 10
              },
              labelLine: {
                normal: {
                  show: false
                },
                emphasis: {
                  show: true
                }
              },
              data: [
                {
                  value: 3321,
                  name: "直销中心",
                  itemStyle: {
                    normal: { color: "#EF5959" },
                    emphasis: { color: "#EF5959" }
                  }
                },
                {
                  value: 1148,
                  name: "手动录入",
                  itemStyle: {
                    normal: { color: "#ffa974" },
                    emphasis: { color: "#ffa974" }
                  }
                },
                {
                  value: 2532,
                  name: "线上访客",
                  itemStyle: {
                    normal: { color: "#ffc68a" },
                    emphasis: { color: "#ffc68a" }
                  }
                },
                {
                  value: 1148,
                  name: "线下拓客",
                  itemStyle: { color: "#F0DD93" }
                },
                {
                  value: 1148,
                  name: "名片海报",
                  itemStyle: { color: "#E7CB84" }
                },
                {
                  value: 1148,
                  name: "自然来访",
                  itemStyle: { color: "#7EBD95" }
                },
                { value: 1148, name: "分享家", itemStyle: { color: "#687793" } }
              ]
            }
          ]
        }
      }
    };
  },
  onReady() {
    setTimeout(() => {
      this.ec.option.series[0].data = [1, 2, 3, 4, 5, 6, 7];
      console.log("折线图数据改变啦");
    }, 1000);
    setTimeout(() => {
      //数组内的数据要$set哦
      this.ec2.option.series[0].data[0].value = 0;
      console.log("折线图数据改变啦");
    }, 2000);
  },
  components: {
    uniEcCanvas
  }
};
</script>

<style scoped>
.uni-ec-canvas {
  width: 750upx;
  height: 750upx;
  display: block;
}
</style>

添加完上面示例代码,再设置好工程路由之后就可以看到小程序图表渲染效果了。

页面效果

页面成功渲染了一个折线图和饼图:

在这里插入图片描述
到此我们就成功引入echarts!

传送门

  • uniapp插件市场:https://ext.dcloud.net.cn/
  • echarts-wx-uniapp开源仓库地址:https://github.com/yah0130/echarts-wx-uniapp/
uni-app开发微信小程序引入echarts并导入动态数据的方法如下: 1. 首先,确保你已经下载了EchartsForWx插件\[2\]。可以在微信小程序的插件管理中搜索并下载该插件。 2. 在uni-app项目中的static目录下创建一个echarts文件夹,并将下载的EchartsForWx插件解压到该文件夹中。 3. 在需要使用echarts的页面中,引入echarts的核心文件。可以在页面的script标签中使用require语法引入echarts文件,例如: ``` const echarts = require('../../static/echarts/echarts.js'); ``` 4. 在页面的data中定义一个变量,用于存储动态数据,例如: ``` data() { return { chartData: \[\] } } ``` 5. 在页面的onLoad生命周期函数中,获取动态数据并将其赋值给chartData变量,例如: ``` onLoad() { // 获取动态数据的逻辑 // 将数据赋值给chartData变量 this.chartData = dynamicData; } ``` 6. 在页面的onReady生命周期函数中,使用echarts绘制图表。可以在canvas的id属性中指定一个唯一的标识符,然后在onReady函数中使用该标识符获取canvas的上下文,并使用echarts的API绘制图表,例如: ``` onReady() { const chart = echarts.init(this.$refs.chart); // 获取canvas的上下文 const option = { // echarts的配置项 series: \[{ type: 'bar', data: this.chartData }\] }; chart.setOption(option); // 绘制图表 } ``` 7. 在页面的template中,使用canvas标签创建一个画布,并设置一个唯一的id属性,例如: ``` <canvas id="chart" ref="chart"></canvas> ``` 通过以上步骤,你就可以在uni-app开发微信小程序引入echarts,并导入动态数据来绘制图表了。记得根据你的实际需求修改echarts的配置项和数据。 #### 引用[.reference_title] - *1* [uniapp - 微信小程序引入 Echarts 图表及使用详细教程,简单快速的解决方案(拒绝复杂的过程,附带详细的...](https://blog.youkuaiyun.com/weixin_50545213/article/details/130131596)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [UNIAPP微信小程序使用Echarts](https://blog.youkuaiyun.com/qq_35921773/article/details/127536926)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值