uniapp 微信小程序 使用ucharts

文章目錄

  • 前言
  • 一、組件功能概述
  • 二、代碼結構分析
    • 2.1 模板結構
  • 總結

前言

本文介紹一個基于 Vue 框架的小程序圖表組件開發方案。該組件通過 uCharts 庫實現折線圖的繪制,并支持滾動、縮放、觸摸提示等交互功能。文章將從代碼結構、核心方法、交互實現和樣式設計等方面進行詳細解析。

一、組件功能概述

該組件實現了以下核心功能:

  1. 動態折線圖繪制
  2. 圖表滾動交互
  3. 雙指縮放功能
  4. 數據點提示框
  5. 響應式布局適配

二、代碼結構分析

2.1 模板結構

<template><canvascanvas-id="chart"id="chart"@touchstart="touchstart"@touchmove="touchmove"class="charts"@touchend="touchend"/>
</template><script>
import uCharts from '@/js_sdk/u-charts.js'var uChartsInstance = {}export default {data() {return {cWidth: 750,cHeight: 900,options: {}}},onReady() {this.cWidth = uni.upx2px(750)this.cHeight = uni.upx2px(900)},methods: {generateData(data) {if (!data) {console.error('數據未提供,請傳入有效的數據對象。');return;}this.drawCharts('chart', data);},drawCharts(id, data) {try {const min = this.getMin(data.series);const ctx = uni.createCanvasContext(id, this);const chartOptions = {type: 'line',context: ctx,width: this.cWidth,height: this.cHeight,categories: data.categories,series: data.series,animation: true,touchMoveLimit: 24,background: '#FFFFFF',enableScroll: true,scrollPosition: 'current',padding: [15, 15, 0, 5],legend: {},dataLabel: false,xAxis: {disableGrid: true,scrollShow: true,itemCount: 4,labelCount: 2,formatter: (value) => {const [a, b] = value.split(' ');return b.split(':').slice(0, 2).join(':');}},yAxis: {data: [{ min }]},extra: {line: {type: 'straight',width: 2,activeType: 'hollow'},tooltip: {showCategory: true}}};uChartsInstance[id] = new uCharts(chartOptions);} catch (error) {console.error('繪制圖表時發生錯誤:', error);}},getMin(series) {let min = Infinity;series.forEach(item => {item.data.forEach(value => {if (value < min) {min = value;}});});return min;},touchstart(e) {if (uChartsInstance[e.target.id]) {uChartsInstance[e.target.id].scrollStart(e);}},touchmove(e) {if (uChartsInstance[e.target.id]) {uChartsInstance[e.target.id].scroll(e);uChartsInstance[e.target.id].dobuleZoom(e);}},touchend(e) {if (uChartsInstance[e.target.id]) {uChartsInstance[e.target.id].scrollEnd(e);uChartsInstance[e.target.id].touchLegend(e);uChartsInstance[e.target.id].showToolTip(e);}}}
}
</script><style>
page {width: 100%;height: 100%;background: #fff;
}
</style><style lang="scss" scoped>
.charts {width: 750rpx;height: 900rpx;
}
</style>    

總結

本文僅僅簡單介紹了ucharts在uniapp微信小程序中的使用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/74344.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/74344.shtml
英文地址,請注明出處:http://en.pswp.cn/web/74344.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Axure項目實戰:智慧運輸平臺后臺管理端-承運商管理(中繼器篩選)

親愛的小伙伴,在您瀏覽之前,煩請關注一下,在此深表感謝! 課程主題:智慧運輸平臺后臺管理端 主要內容:承運商管理 應用場景:條件篩選、增刪改查操作、臺賬制作 案例展示: 正文內容: 承運商管理模塊主要解決平臺對承運商的管理,包括新增承運商作,審核承運商申請,修…

[論文筆記] Deepseek技術報告解讀: MLAMTP

1. RMSNorm 歸一化層 class RMSNorm(nn.Module):def __init__(self, dim: int, eps: float = 1e-8):super().__init__()self.eps = epsself.weight = nn.Parameter(torch.ones(dim)) # 可學習的縮放參數def _norm(self, x: torch.Tensor):return x * torch.rsqrt(x.pow(2).me…

八款內網電腦監控軟件:探尋適配企業需求的數字化監管方案組合

數字化辦公的時代背景下&#xff0c;企業管理面臨著前所未有的挑戰。如何實現對員工辦公行為的高效管理&#xff0c;確保網絡資源的合理利用&#xff0c;成為眾多企業決策者和高級管理人員亟待解決的重要問題。內網電腦監控軟件作為一種有效的管理工具&#xff0c;應運而生。本…

Flutter求助貼

報錯信息&#xff1a;The Dart VM Service was not discovered after 30 seconds. This is taking much longer than expected... 基本情況&#xff1a; 硬件&#xff1a;mac(15.3.1)&#xff0c;iPad(iOS 16.6),iPhone 16 pro(iOS 18.4) 項目環境 flutter&#xff1a;3.16…

React(九)React Hooks

初識Hook 我們到底為什么需要hook那? 函數組件類組件存在問題 函數組件存在的問題&#xff1a; import React, { PureComponent } from reactfunction HelloWorld2(props) {let message"Hello world"// 函數式組件存在的缺陷&#xff1a;// 1.修改message之后&a…

數據清洗的具體內容

&#xff08;一&#xff09;ETL介紹 “ETL&#xff0c;是英文Extract-Transform-Load的縮寫&#xff0c;用來描述將數據從來源端經過抽取&#xff08;Extract&#xff09;、轉換&#xff08;Transform&#xff09;、加載&#xff08;Load&#xff09;至目的端的過程。ETL一詞較…

【動手學深度學習】#7 現代卷積神經網絡

主要參考學習資料&#xff1a; 《動手學深度學習》阿斯頓張 等 著 【動手學深度學習 PyTorch版】嗶哩嗶哩跟李牧學AI 概述 硬件性能和大數據的發展為深度卷積神經網絡&#xff08;AlexNet&#xff09;的實現提供了條件。VGG首次將塊的思想用于搭建網絡。NiN將多層感知機應用在…

Jenkins + CICD流程一鍵自動部署Vue前端項目(保姆級)

git倉庫地址&#xff1a;參考以下代碼完成,或者采用自己的代碼。 南澤/cicd-test 拉取項目代碼到本地 使用云服務器或虛擬機采用docker部署jenkins 安裝docker過程省略 采用docker部署jenkins&#xff0c;注意這里的命令&#xff0c;一定要映射docker路徑&#xff0c;否則無…

使用 libevent 處理 TCP 粘包問題(基于 Content-Length 或雙 \r\n)

在基于 libevent 的 TCP 服務器開發中,處理消息邊界是常見需求。以下是兩種主流分包方案的完整實現: 一、基于 Content-Length 的分包方案 1.1 數據結構設計 typedef struct {struct bufferevent *bev;int content_length; // 當前消息的預期長度int received_bytes; //…

酶動力學預測工具CataPro安裝教程

簡介&#xff1a;預測酶動力學參數是酶發現和酶工程中的一項重要任務。在此&#xff0c;研究人員基于蛋白質語言模型、小分子語言模型和分子指紋&#xff0c;提出了一種名為 CataPro 的新酶動力學參數預測算法。該研究從 BRENDA 和 SABIO-RK 數據庫中收集了最新的轉化率&#x…

項目實戰:基于Spring WebFlux與LangChain4j實現大語言模型流式輸出

一、背景 在大語言模型&#xff08;LLM&#xff09;應用場景中&#xff0c;GPT-4等模型的響應生成往往需要數秒至數十秒的等待時間。傳統同步請求會導致用戶面對空白頁面等待&#xff0c;體驗較差。本文通過Spring WebFlux響應式編程與SSE服務器推送技術&#xff0c;實現類似打…

Go語言入門經典:數組與切片詳解

Go語言入門經典&#xff1a;數組與切片詳解 數組和切片是Go語言中兩種重要的數據結構。數組是一種固定長度的集合&#xff0c;而切片則是一種靈活的動態集合。本章將詳細講解數組和切片的定義、初始化、訪問元素、動態操作等內容&#xff0c;幫助讀者全面掌握這兩種數據結構。…

uniapp中如何用iconfont來管理圖標集成到我們開發的項目中

我們在開發不管小程序還是APP的過程中都會用到圖標這個東西,那么iconfont提供了對應的功能,怎么才能方便的集成到我們的小程序或者APP項目中,目標是方便調用并且方便管理。 首先注冊ICONFONT賬號 www.iconfont.cn中去注冊即可選擇我們需要的圖標如下 我們搜索我們需要的圖…

從實用的角度聊聊Linux下文本編輯器VIM

本文從實用的角度聊聊Vim的常用命令。何為實用&#xff1f;我舉個不實用的例子大家就明白了&#xff0c;用vim寫代碼。;) “vim是從 vi 發展出來的一個文本編輯器。代碼補全、編譯及錯誤跳轉等方便編程的功能特別豐富&#xff0c;在程序員中被廣泛使用&#xff0c;和Emacs并列成…

優化程序命名:提升專業感與用戶體驗

在軟件開發的廣闊天地中&#xff0c;程序命名這一環節常常被開發者們忽視。不少程序沿用著簡單直白、缺乏雕琢的名字&#xff0c;如同素面朝天的璞玉&#xff0c;雖不影響其核心功能的發揮&#xff0c;但卻在無形之中錯失了許多提升用戶印象與拓展應用場景的機會。今天&#xf…

LeetCode BFS解決最短路問題

廣度優先搜索(BFS, Breadth-First Search)是一種用于圖和樹結構的遍歷算法&#xff0c;特別適合解決無權圖的最短路徑問題。 算法思想&#xff1a; BFS從起始節點開始&#xff0c;按照"廣度優先"的原則&#xff0c;逐層向外擴展搜索&#xff1a; 先訪問起始節點的…

[物聯網iot]對比WIFI、MQTT、TCP、UDP通信協議

第一步&#xff1a;先理解最基礎的關系&#xff08;類比快遞&#xff09; 假設你要給朋友寄快遞&#xff1a; Wi-Fi&#xff1a;相當于“公路和卡車”&#xff0c;負責把包裹從你家運到快遞站。 TCP/UDP&#xff1a;相當于“快遞公司的運輸規則”。 TCP&#xff1a;順豐快遞&…

基于python的電影數據分析及可視化系統

一、項目背景 隨著電影行業的快速發展&#xff0c;電影數據日益豐富&#xff0c;如何有效地分析和可視化這些數據成為行業內的一個重要課題。本系統旨在利用Python編程語言&#xff0c;結合數據分析與可視化技術&#xff0c;為電影行業從業者、研究者及愛好者提供一個便捷的電…

Java8 到 Java21 系列之 Lambda 表達式:函數式編程的開端(Java 8)

Java8 到 Java21 系列之 Lambda 表達式&#xff1a;函數式編程的開端&#xff08;Java 8&#xff09; 系列目錄 Java8 到 Java21 系列之 Lambda 表達式&#xff1a;函數式編程的開端&#xff08;Java 8&#xff09;Java 8 到 Java 21 系列之 Stream API&#xff1a;數據處理的…

②EtherCAT/Ethernet/IP/Profinet/ModbusTCP協議互轉工業串口網關

型號 協議轉換通信網關 EtherCAT 轉 Modbus TCP 配置說明 網線連接電腦到模塊上的 WEB 網頁設置網口&#xff0c;電腦所連網口的網段設置成 192.168.1.X&#xff08;X 是除 8 外的任一數值&#xff09;后&#xff0c;打開瀏覽器&#xff0c;地址欄輸入 192.168.1.8 &#xff…