首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >uniapp使用echarts在H5上显示报错问题的解决方法

uniapp使用echarts在H5上显示报错问题的解决方法

原创
作者头像
炑焽
发布于 2024-08-11 07:12:37
发布于 2024-08-11 07:12:37
5960
举报

前言

在做uniapp vue3开发的echarts图表的时候,发现在浏览器上面正常运行,但在微信开发者工具上显示报错了,报错如下

image.png
image.png

原因:在微信小程序中,使用document.getElementById会报错,因为小程序的运行环境是基于WedView的,不同于浏览器环境。在微信小程序中没有直接操作Dom的能力,也就是没有document对象和getElementById方法

一、使用echarts在浏览器上运行的方法

  1. 安装echarts vue-echarts
代码语言:bash
AI代码解释
复制
npm i echarts vue-echarts
  1. 在main.js引入echarts vue-echarts
代码语言:js
AI代码解释
复制
import { createApp } from 'vue'
import App from './App.vue'
import 'echarts';
import ECharts from 'vue-echarts'
const app = createApp(App)
app
.component('vue-echarts', ECharts)
  .mount('#app')
  1. 在vue项目中使用echarts
代码语言:js
AI代码解释
复制
<template>
	<view class="wrapper">
		<view class="container">
			<vue-echarts :option="options" />
		</view>
	</view>
</template>
<script setup>
	import {ref,onMounted} from 'vue'
	const props=defineProps({
		data: Object
	})
	const options = ref(null)
	onMounted(() => {
		upData()
	})
	const upData = () => {
		options.value ={
  title: {
    text: 'Stacked Area Chart'
  },
  tooltip: {
    trigger: 'axis',
    axisPointer: {
      type: 'cross',
      label: {
        backgroundColor: '#6a7985'
      }
    }
  },
  legend: {
    data: ['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine']
  },
  toolbox: {
    feature: {
      saveAsImage: {}
    }
  },
  grid: {
    left: '3%',
    right: '4%',
    bottom: '3%',
    containLabel: true
  },
  xAxis: [
    {
      type: 'category',
      boundaryGap: false,
      data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    }
  ],
  yAxis: [
    {
      type: 'value'
    }
  ],
  series: [
    {
      name: 'Email',
      type: 'line',
      stack: 'Total',
      areaStyle: {},
      emphasis: {
        focus: 'series'
      },
      data: [120, 132, 101, 134, 90, 230, 210]
    },
    {
      name: 'Union Ads',
      type: 'line',
      stack: 'Total',
      areaStyle: {},
      emphasis: {
        focus: 'series'
      },
      data: [220, 182, 191, 234, 290, 330, 310]
    },
    {
      name: 'Video Ads',
      type: 'line',
      stack: 'Total',
      areaStyle: {},
      emphasis: {
        focus: 'series'
      },
      data: [150, 232, 201, 154, 190, 330, 410]
    },
    {
      name: 'Direct',
      type: 'line',
      stack: 'Total',
      areaStyle: {},
      emphasis: {
        focus: 'series'
      },
      data: [320, 332, 301, 334, 390, 330, 320]
    },
    {
      name: 'Search Engine',
      type: 'line',
      stack: 'Total',
      label: {
        show: true,
        position: 'top'
      },
      areaStyle: {},
      emphasis: {
        focus: 'series'
      },
      data: [820, 932, 901, 934, 1290, 1330, 1320]
    }
  ]
};
	}
</script>
<style lang="scss" scoped>
	.wrapper {
		width: 100%;
		box-sizing: border-box;
		padding: 0 50rpx;
		height: 280rpx;
	}
	.container{
		width: 100%;
		height: 100%;
		background-color: pink;
	}
</style>
  1. 效果图
image.png
image.png

二、使用uCharts的高性能跨平台图表库,在PC、H5、APP、小程序兼容

uCharts官网

  1. 跨平台引用

这里的跨平台引用指的是以 uni-app 或者 Taro 为基础的框架平台,借助跨平台框架将 uCharts 运行到各个终端平台。

  1. 获取uCharts

原生 uCharts 您只需获取 u-charts.js 或 u-charts.min.js 单个文件,在页面中引用这个 js 即可开始使用,您可通过以下方式获得 uCharts:

  • 通过码云 uCharts 项目开源地址获取 u-charts.js,点击进入码云。
  • 通过 npm 命令npm i @qiun/ucharts安装,成功后即可使用 import 或 require 进行引用。
代码语言:bash
AI代码解释
复制
npm i @qiun/ucharts
  • 通过 uCharts 官网定制功能,定制您的专属 uCharts,体积更小、速度更快!
  1. uni-app平台文档

canvas文档

API文档

  1. demo示例
代码语言:html
AI代码解释
复制
<template>
  <view>
    <canvas canvas-id="column" id="column" class="charts" @touchend="tap"/>
  </view>
</template>

<script>
import uCharts from '@/js_sdk/u-charts.js';
var uChartsInstance = {};
export default {
  data() {
    return {
      cWidth: 750,
      cHeight: 500
    };
  },
  onReady() {
    //这里的 750 对应 css .charts 的 width
    this.cWidth = uni.upx2px(750);
    //这里的 500 对应 css .charts 的 height
    this.cHeight = uni.upx2px(500);
    this.getServerData();
  },
  methods: {
    getServerData() {
      //模拟从服务器获取数据时的延时
      setTimeout(() => {
        //模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
        let res = {
            categories: ["2016","2017","2018","2019","2020","2021"],
            series: [
              {
                name: "目标值",
                data: [35,36,31,33,13,34]
              },
              {
                name: "完成量",
                data: [18,27,21,24,6,28]
              }
            ]
          };
        this.drawCharts('column', res);
      }, 500);
    },
    drawCharts(id,data){
      const ctx = uni.createCanvasContext(id, this);
      uChartsInstance[id] = new uCharts({
        type: "column",
        context: ctx,
        width: this.cWidth,
        height: this.cHeight,
        categories: data.categories,
        series: data.series,
        animation: true,
        background: "#FFFFFF",
        padding: [15,15,0,5],
        xAxis: {
          disableGrid: true
        },
        yAxis: {
          data: [{min: 0}]
        },
        extra: {
          column: {
            type: "group"
          }
        }
      });
    },
    tap(e){
      uChartsInstance[e.target.id].touchLegend(e);
      uChartsInstance[e.target.id].showToolTip(e);
    }
  }
};
</script>

<style scoped>
  .charts{
    width: 750rpx;
    height: 500rpx;
  }
</style>
image.png
image.png

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
uCharts实现一个叠堆柱状图
在uni-app里面会使用到统计图,和echarts类似,也有自己的官方文档可以作参考,开发考勤的app项目的时候遇到了一个叠堆柱状图,统计每天正常,迟到,缺勤,早退,补卡五种状态的人数,做一下记录。
王小婷
2019/12/26
1.6K0
uCharts实现一个叠堆柱状图
二、基础平滑、面积折线图与折线堆叠、面积堆叠《手把手教你 ECharts 数据可视化详解》
注:本系列教程需要对应 JavaScript 、html、css 基础,否则将会导致阅读时困难,本教程将会从 ECharts 的官方示例出发,详解每一个示例实现,从中学习 ECharts 。
1_bit
2022/12/10
3.3K0
二、基础平滑、面积折线图与折线堆叠、面积堆叠《手把手教你 ECharts 数据可视化详解》
太好玩了,爬虫、部署API、加小程序,一条龙玩转知乎热榜!
一直想做一个从爬虫到数据处理,到API部署,再到小程序展示的一条龙项目,最近抽了些时间,实现了一个关于知乎热榜的,今天就来分享一下!
周萝卜
2020/05/22
4600
Echarts——如何默认选中图表并显示tooltip
思索
2024/06/24
6790
Echarts——如何默认选中图表并显示tooltip
vue-echarts的用法
原生的Echarts需要定义id,有时候不方便,对于习惯了数据驱动可以使用vue-echarts
tianyawhl
2021/06/17
1.7K0
vue-echarts的用法
三、教你搞懂渐变堆叠面积图《手把手教你 ECharts 数据可视化详解》
注:本系列教程需要对应 JavaScript 、html、css 基础,否则将会导致阅读时困难,本教程将会从 ECharts 的官方示例出发,详解每一个示例实现,从中学习 ECharts 。
1_bit
2022/12/14
1.7K0
三、教你搞懂渐变堆叠面积图《手把手教你 ECharts 数据可视化详解》
echarts教程(四): 配置hover时突出显示图例,隐藏其他图例
达到的效果是,隐藏其他图例,只显示当前hover的图例,在emphasis中也可以配置更多的hover效果
拿我格子衫来
2022/01/24
3.2K0
echarts教程(四): 配置hover时突出显示图例,隐藏其他图例
Echarts5.3.2可视化案例-应用篇
参考: https://github.com/sutianbinde/charts https://www.runoob.com/html/html5-canvas.html https://www.cnblogs.com/chengduxiaoc/p/7664397.html 效果:
IT从业者张某某
2022/11/12
2.1K0
Echarts5.3.2可视化案例-应用篇
vue-next-admin可视化demo1卫星地图
演示地址: https://lyt-top.gitee.io/vue-next-admin-preview/#/visualizingDemo1 演示效果: 代码: <template> <div class="visualizing-demo1"> <!-- 地图 --> <div id="visualizingDemo1" style="height: 100%"></div> <div class="visualizing-container"> <!-
周星星9527
2021/11/03
7311
vue-next-admin可视化demo1卫星地图
echarts在react中的引入使用(俩种方法)
一.第一步 先看看你的echarts版本。 小于5.0版本的可以使用以下方法: 先安装: npm i echarts@4.0.4 --save npm i echarts-for-react --save 1.原始echarts 导入 import React from 'react' // 引入 ECharts 主模块 import echarts from 'echarts/lib/echarts' // 引入饼图 import 'echarts/lib/chart/bar' // 引入提示框和标题组
biaoblog.cn 个人博客
2022/08/11
14.3K0
vue-echarts切换主题
一、定制下载主题 echarts官网下载:https://echarts.apache.org/zh/theme-builder.html 下载json文件到项目中,颜色参数也可直接在json中修改
tianyawhl
2021/11/10
2K0
关于做angular4引入echarts图表
NgxEchartsService 是全局 echarts 对象的包装器。您可以直接获取本机echarts对象或使用包装器方法。例如:
用户1437675
2018/08/20
3.3K0
太好玩了,爬虫、部署API、加小程序,一条龙玩转知乎热榜
一直想做一个从爬虫到数据处理,到API部署,再到小程序展示的一条龙项目,最近抽了些时间,实现了一个关于知乎热榜的,今天就来分享一下!
小小科
2020/08/17
9950
echarts数据可视化
Charts,商业级数据图表,是百度的一个开源的数据可视化工具。目前,非常美观,非常好用,非常受欢迎的数据可视化工具。
ruochen
2021/12/04
1.7K0
从零开始:使用 Vue-ECharts 实现数据可视化图表功能
你好,我是喵喵侠。在前端开发中,经常会接到图表相关的页面需求,你需要在页面上绘制不同类型的图表,来丰富页面数据的呈现效果。通过图表你可以很直观的看到数据的大体情况,可以很方便的将数据进行多维度的对比。接下来我会为你介绍Vue-ECharts,看完本文后你能够快速上手开发。
喵喵侠
2024/06/26
8.5K3
从零开始:使用 Vue-ECharts 实现数据可视化图表功能
vue-echarts画深度图
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/144782.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/26
3940
【前端统计图】echarts多条折线图和横柱状图实现
参考链接:echarts官网:http://echarts.baidu.com/ 原型图(效果图): 图片.png 代码: <!DOCTYPE html> <html> <head>
王小婷
2018/06/01
2.3K0
「微信小程序」开发常用事例(六)
将自己经历的一些问题记录在案,方便后续类似相同需求直接使用“CV 大法”,节省部分开发成本。当然,如果此文某一条正好对屏幕前的你有所帮助,点个小赞赞,我会贼老开心的~欢迎大家提供更好的解决方案,我比较是搞 Android 的,这方面还真不熟练。
贺biubiu
2021/01/12
5800
「微信小程序」开发常用事例(六)
这款高颜值、兼容多平台的开源项目一定不能错过!!
最近在使用uniapp开发小程序,所以经常翻看Dcloud插件市场,发现了一款超高颜值、兼容多平台的开源组件——图鸟图表
程序员老鱼
2024/02/03
3550
这款高颜值、兼容多平台的开源项目一定不能错过!!
如何用vue-echarts实现面积图?
大家好,我是喵喵侠。Echarts是百度官方推出的一种常见的图表开发库,可以让前端开发快速的构建各式各样的图表。而Vue-Echarts是官方推出的Vue版本的Echarts,你可以直接在Vue项目中更好的创建图表。最近我经常接到图表开发相关的需求,在开发的过程中,发现很多配置都是公用的,个别地方稍微改下就好了,因此我用Vue-Echarts封装了组件,可以让其他页面模块,更快速的开发相应的图表。今天给大家带来的是面积图的开发,我会贴上完整可运行的代码,以及一些需要注意的点。
喵喵侠
2024/07/23
3750
如何用vue-echarts实现面积图?
推荐阅读
相关推荐
uCharts实现一个叠堆柱状图
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档