ucharts图表滚动

news/2024/10/17 14:29:50/

背景:

使用ucharts绘制折线图,当数据项多的时候,横坐标显示的文字会重合,故想到滑动

项目代码使用的是原生的代码,而非ucharts的组件:

<template><view><canvas canvas-id="chartsLine" id="chartsLine" class="w-full" @touchstart="touchstart" @touchmove="touchmove" @touchend="touchend" /></view>
</template>

1. 整体配置开启可滑动

2. X轴配置--设置最多显示的数据项

3. 设置滚动条拖拽事件

@touchstart="touchstart" @touchmove="touchmove" @touchend="touchend"touchstart(e) {uChartsInstance[e.target.id].scrollStart(e);},touchmove(e) {uChartsInstance[e.target.id].scroll(e);},touchend(e) {uChartsInstance[e.target.id].scrollEnd(e);uChartsInstance[e.target.id].touchLegend(e);uChartsInstance[e.target.id].showToolTip(e);}

注意:通常之前的canvas包含了@touchend="tap" 事件,记得删除一下

补充:动态计算最多显示项

1. 动态计算图表的屏幕显示宽度

this.$nextTick(() => {let info = uni.createSelectorQuery().in(this).select('#chartsLine');let that = thisinfo.boundingClientRect(function(data) {that.cWidth = data.widththat.cHeight = data.heightthat.getServerData()}).exec(function(res) {})
})

其中id为 chartsLine 的 canvas 宽度设置为父组件的百分百

2. 获取图表类别的字符串长度, 并赋予每个字符一定的宽度,显示宽度/每个类别宽度即可

// 考虑到我的类别文字长度相差不大,此处选择了第一个类别,也可自行选择合适的类别
const str = this.$props.option.categories[0]// 默认每个字符13px
const len = str.length * 13// 显示的数据项应为整数
this.itemCount = Math.floor(this.cWidth / len)

3. 动态设置显示数据项

效果:


http://www.ppmy.cn/news/1514811.html

相关文章

银河麒麟V10如何安装本地deb软件包?(以安装wps为例)

银河麒麟V10如何安装本地deb软件包&#xff1f;&#xff08;以安装wps为例&#xff09; 一、准备二、安装三、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在银河麒麟V10中安装本地.deb软件包&#xff0c;虽然apt主要用于管理仓库中…

java整合Redis

Jedis Jedis是Redis官方推荐的Java连接开发工具&#xff0c;是一个用于连接和操作Redis数据库的Java客户端库。它提供了一系列的方法来操作Redis的键值存储、列表、哈希、集合和有序集合等数据结构。要在Java开发中使用好Redis中间件&#xff0c;必须对Jedis熟悉才能写成漂亮的…

Linux网络环境搭建,开发板网线直连电脑网口,电脑WIFI上网

开发板网线直连电脑网口&#xff08;电脑自带&#xff0c;一般有PCI&#xff0c;不是USB网卡&#xff09;&#xff0c;电脑WIFI上网 因为电脑是 WiFi 上网&#xff0c;所以需要添加一个网络适配器并设置成 NAT 模式&#xff0c;供虚拟机上网。 设置双网卡&#xff0c;注意双网卡…

国产3A游戏《黑神话悟空》中AI绘画技术的运用与探索

导语&#xff1a;近年来&#xff0c;我国游戏产业不断发展&#xff0c;越来越多的国产游戏开始尝试运用AI技术&#xff0c;以提升游戏品质。其中&#xff0c;国产3A游戏《黑神话悟空》便在原画设计过程中&#xff0c;巧妙地运用了AI绘画技术。本文将带你了解《黑神话悟空》如何…

C语言试题(含答案解析)

单选 1.下面C程序的运行结果为&#xff08;&#xff09; int main(void) {printf("%d", B < A);return 0; }A.编译错误 B.1 C.0 D.运行错误 A’的ascii码值为65&#xff0c;‘B’的ascii码值为66&#xff0c;‘B’<‘A’是不成立的&#xff0c;返回0&#xf…

浅拷贝和深拷贝(图文详解)

前端面试中&#xff0c;面试官经常会提到关于浅拷贝和深拷贝的问题。但是我总是理解于它的表面&#xff0c;面试中再深挖一点就会卡壳&#xff0c;我想把我的理解写下来&#xff0c;希望可以帮助到大家&#xff0c;如果有错误的地方希望大家可以指正&#xff0c;以免误导~ 看这…

Android 自适应屏幕技术

layout自适应屏幕大小Android手机屏幕大小不一,有480x320,640x360,800x480.怎样才能让App自动适应不同的屏幕呢? 其实很简单,只需要在res目录下创建不同的layout文件夹,比如:layout-640x360,layout-800x480,所有的layout文件在编译之后都会写入R.java里,而系统会根据…

论文浅尝 | 超越实体对齐: 通过实体关系协同实现完整的知识图谱对齐

笔记整理&#xff1a;米尔扎提阿力木&#xff0c;天津大学硕士&#xff0c;研究方向为大模型 论文链接&#xff1a;https://arxiv.org/abs/2407.17745 摘要 知识图谱对齐(Knowledge Graph Alignment, KGA)旨在整合来自多个来源的知识&#xff0c;以解决单个知识图谱在覆盖范围和…