uniapp微信小程序使用ucharts2.0解决穿透(遮挡|层级问题)

如果出现模糊问题,修改pixelRatio为2或者3即可,模拟器还是会有穿透问题,但是真机可以,就不折腾了。基本都是复制粘贴,只是梳理一下流程,最大的问题解决了,细节性的问题慢慢调呗。

第一步:引入u-charts-v2.0.0.js(https://gitee.com/uCharts/uCharts/blob/master/qiun-data-charts/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts-v2.0.0.js)和测试数据demodata.json(https://gitee.com/uCharts/uCharts/blob/master/qiun-data-charts/mockdata/demodata.json

第二步,新建一个vue文件存放以下代码,以便于其他地方调用

<template>
	<view class="content">
		<!-- 只有微信小程序有canvas2d模式 -->
		<qiun-title-bar title="启用type='2d'用法示例" />
		<!-- 开启canvas2d模式后@tap的获取的点击坐标会不准确,开发者需按组件源码自行处理event的坐标为正确的坐标,并传入uCharts的实例中方可正确调用showTooltip方法 -->
		<canvas canvasId="canvasColumn" id="canvasColumn" type="2d" class="charts" @tap="tap($event,'canvasColumn')" />
	</view>
</template>

<script>
	import uCharts from '../../utils/u-charts-v2.0.0.js';
	var uChartsInstance = {};

	//下面是演示数据,您的项目不需要引用,数据需要您从服务器自行获取
	import demodata from '../../test/demodata.json';


	export default {
		data() {
			return {
				cWidth: 350,
				cHeight: 300,
				pixelRatio: 2,
			};
		},
		onLoad() {
			//#ifdef MP-ALIPAY || MP-WEIXIN
			this.pixelRatio = uni.getSystemInfoSync().pixelRatio;
			//#endif
			this.cWidth = uni.upx2px(750);
			this.cHeight = uni.upx2px(500);
			this.getServerData();
		},
		onReady() {
			this.getServerData()
		},
		methods: {
			//模拟从服务器获取数据
			getServerData() {
				setTimeout(() => {
					// 需要自行拼接chartsData
					let chartsData = JSON.parse(JSON.stringify(demodata.Line))
					let type2dData = JSON.parse(JSON.stringify(demodata.Column))
					// #ifdef MP-WEIXIN
					this.draw2dCharts("canvasColumn", type2dData);
					// #endif
				}, 500);
			},
			draw2dCharts(id, data) {
				const query = uni.createSelectorQuery().in(this);
				query.select('#' + id).fields({
					node: true,
					size: true
				}).exec(res => {
					if (res[0]) {
						const canvas = res[0].node
						//v2.0版本必须要获取context并传入opts(option)中
						const ctx = canvas.getContext('2d')
						canvas.width = res[0].width * this.pixelRatio
						canvas.height = res[0].height * this.pixelRatio
						uChartsInstance[id] = new uCharts({
							//canvasId: canvasId, v2.0版本不需要再传canvasId和$this了,v1.0因为传$this会导致实例混乱
							type: 'column',
							padding: [15, 5, 0, 15],
							dataLabel: true,
							width: this.cWidth * this.pixelRatio,
							height: this.cHeight * this.pixelRatio,
							pixelRatio: this.pixelRatio,
							canvas2d: true, //开启canvas2d
							context: ctx, //v2.0版本必须要传context
							fontSize: 11,
							animation: true,
							categories: data.categories,
							series: data.series,
							xAxis: {
								disableGrid: true,
							},
							yAxis: {
								data: [{
									position: 'right',
									axisLine: false,
									//注意,v2.0版本的format变成了formatter
									formatter: (val) => {
										return val.toFixed(0) + '元'
									},
								}]
							},
							extra: {
								column: {
									type: 'group',
									width: 20
								}
							}
						});
					} else {
						console.error("[uCharts]:未获取到context")
					}
				})
			},
			tap(e, id) {
				uChartsInstance[id].showToolTip(e)
			}
		}
	}
</script>

<style>
	.content {
		display: flex;
		flex-direction: column;
		flex: 1;
		padding-bottom: 40px;
	}

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

第三步:任意一个vue文件使用,跟vue完全一样

模拟器效果

真机效果

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: uniapp 是一种跨平台开发框架,支持多个小程序平台的开发,包括微信小程序。而 echarts 是一种非常强大的数据可视化工具,能够轻松地将数据转化成形化的展示方式,方便用户进行数据的分析和理解。 在使用 uniapp 开发微信小程序时,可以通过引入 echarts 库的方式,在小程序使用 echarts 进行数据可视化的展示。首先,在 uniapp 中安装 echarts 库,然后在需要使用 echarts 的页面中引入 echarts 库,可以直接在引入的页面中使用 echarts 的 API 进行表的创建和展示。 同时也需要注意的是,在使用 echarts 进行数据可视化展示时,要根据实际情况选择合适的表类型,以达到最好的展示效果。另外还需要根据项目的实际需求,对数据进行预处理和格式化,确保数据的准确性和可读性。 总之,使用 uniapp 开发微信小程序使用 echarts 进行数据可视化,并非难事,只需按照 echarts 的 API 进行开发即可。如此一来,开发者便可轻松地创建优美而实用的表,完美呈现出数据的内在价值。 ### 回答2: uniapp 是一种跨平台开发框架,可以同时支持微信小程序、H5、安卓、iOS等平台。而 Echarts 是一款优秀的数据可视化工具,可以将数据以表的形式展示出来,支持多种表类型和交互方式。那么在 uniapp 中如何使用 echarts 呢? 首先,在 uniapp 中引入 echarts 库。可以使用 npm 安装 echarts,也可以直接下载 echarts.js 文件并放置在项目中。 然后,在需要使用 echarts 的页面或组件中,引入并初始化 echarts。可以在页面或组件的 onReady 或 mounted 生命周期中进行初始化。具体步骤如下: 1. 引入 echarts 库 ``` import * as echarts from 'echarts'; ``` 2. 初始化 echarts ``` onReady() { let myChart = echarts.init(this.$refs.chart); myChart.setOption({...}); // 设置表的配置项和数据 } ``` 其中,`this.$refs.chart` 是一个 div 元素,用来承载表。 3. 设置表的配置项和数据 ``` let option = { title: {...}, legend: {...}, xAxis: {...}, yAxis: {...}, series: {...} }; myChart.setOption(option); ``` 配置项和数据决定了表的样式和内容,可以根据自己的需求进行设置。 需要注意的是,微信小程序有一些特殊的限制,如不能使用动态的 DOM,因此echarts的一些动态特效不能使用。同时,echarts 也只能显示在固定大小的画布上,不能根据屏幕大小自适应调整。 总结来说,使用 echartsuniapp 中的流程是:引入库、初始化 echarts、设置配置项和数据。需要特别注意微信小程序的限制,对一些动态特效或屏幕适应做出相应的调整。通过这些步骤,可以让我们在 uniapp 中轻松使用 echarts 进行数据可视化。 ### 回答3: 在uniapp中可以使用echarts来实现数据可视化的效果,适用于各种类型的微信小程序。 首先,在uniapp项目中引入echarts组件库,可以使用npm或手动下载方式引入。先安装echarts组件库,然后通过uni_modules目录下的uni-mpvue-router-patch插件引入,最后通过Vue.use()进行注册。 接下来,在需要使用echarts的页面引入echarts组件,并使用template标签来编写echarts表的HTML模板。其中,通过echarts.init()初始化echarts使用option配置项来配置表的样式和数据。 最后,在vue页面组件中导入数据,并在echarts实例的setOption()方法中更新表数据。此时,页面中的echarts表便会根据更新后的数据来重新绘制。 需要注意的是,在使用echarts时,应该了解相关API和样式配置,以便更好地使用其功能,实现所需的数据可视化效果。 总之,通过以上步骤,可以在uniapp微信小程序中实现使用echarts进行数据可视化的功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值