用豆包MarsCode IDE,從0到1畫出精美數據大屏!

豆包MarsCode IDE 是一個云端 AI IDE 平臺,通過內置的 AI 編程助手,開箱即用的開發環境,可以幫助開發者更專注于各類項目的開發。

作為一名前端開發工程師,今天想嘗試利用豆包MarsCode IDE,選擇 Vue + Echarts 創建一個大屏項目:數智化線上車展數據分析平臺

項目準備

進入 IDE 之后,注冊登錄進入主頁。

圖片

當你選擇創建一個 Vue 項目后,會初始化一個項目,點擊 RUN 即可運行。

瀏覽 package.json 文件,發現默認創建的是 Vue3+Vite 構建的項目。雖然官方提供的模板是 Vue3 的,但如果你希望使用 Vue2 也可以通過 Github 導入項目。

圖片

畫大屏必不可少的就是 ECharts,通過 npm 安裝速度較慢,所以使用鏡像及其命令 cnpm。因為豆包MarsCode IDE 內置了 AI 助手,提供代碼自動補全與生成、問題修復、代碼優化等能力,安裝了 cnpm 后,IDE 猜到了我是在查看版本,在控制臺輸入 cnpm 之后就會自動補全 cnpm -v 來查看版本。

圖片

通過命令?cnpm install echarts --save?安裝 ECharts,cnpm 的安裝速度就很快了,差不多一分鐘就可以搞定,在項目的 package.json 文件中也可以看到安裝的版本5.5.1.

圖片

畫大屏需要靜態圖片來裝飾整個大屏,可以通過 upload 批量上傳。

圖片

將模板默認生成的代碼,簡單刪一下就變為一個空的項目,我們就可以正式開始大屏的制作了。

數據大屏的制作

圖片

可視化數據大屏首先要解決的問題就是適配性,這是一個比較專業性的問題。豆包MarsCode 集成了 AI 功能,所以我們可以直接向 AI 助手提問:“想要可視化大屏適配任何多種分辨率的屏幕,前端該如何實現。”我們看一下它是怎么回答的。

圖片

我選擇的解決方案是:通過 CSS 的?scale?屬性,根據屏幕大小,對圖表進行整體的等比縮放,從而達到自適應效果。

CSS 的?scale?屬性用于指定元素的縮放比例。它是?transform?屬性的一個值,可以使用 CSS 中的?transform?屬性來設置元素的縮放比例。

scale?屬性可以接受一個或兩個參數。如果只提供一個參數,它將同時應用于元素的寬度和高度,導致元素在兩個維度上按比例縮放。如果提供兩個參數,第一個參數表示寬度的縮放比例,第二個參數表示高度的縮放比例。

  • /* 元素整體縮放為原來的 50% */transform: scale(0.5); /* 元素寬度縮放為原來的 75%,高度縮放為原來的 120% */transform: scale(0.75, 1.2);

scale?屬性可以與其他?transform?屬性值結合使用,比如?translate、rotate?等,以實現更復雜的變形效果。同時,scale?屬性也可以用在 CSS 動畫中,通過改變縮放比例來實現元素的動態縮放效果。 具體代碼如下:

let screen = ref()
// 掛載時首先去獲取視口的寬高
onMounted(() => {
?// 使用ref獲取到的dom對象調用時都需要帶.value
?screen.value.style.transform = `scale(${getScale()}) translate(-50%,-50%)`
?console.log(`scale(${getScale()}) translate(-50%,-50%)`,'666')
})
// 創建函數
function getScale(w = 1920, h = 1080) {
?let ww = window.innerWidth / w
?let wh = window.innerHeight / h
?// 按照變化較小者的比例去進行縮放
?return ww < wh ? ww : wh
}
// 視口發生變化時
window.onresize = () => {
?screen.value.style.transform = `scale(${getScale()}) translate(-50%,-50%)`}

getScale()?函數通常用于根據瀏覽器視口大小計算一個縮放因子。這個因子通常被用作?scale?屬性的值,以確保?screen?元素可以根據屏幕大小自動調整大小。translate(-50%,-50%)?部分是用于將縮放后的元素居中顯示的樣式,?transform-origin: left top?表示?transform?屬性的原點位于元素的左上角。 這段代碼提供了一種響應式的方式來調整頁面元素的大小和位置,使得頁面在不同大小的屏幕上都能夠友好地顯示。

先給大家展示下最終效果,我再來一步步演示大屏數據圖表的生成。

圖片

👋整個可視化大屏分為六部分:

兩個橫向柱狀圖、一個中國地圖、一個折線圖、一個餅狀圖和一個熱力圖

橫向柱狀圖 &?折線圖

x軸配置:

  • 類型為'value',表示x軸為數值軸;

  • 軸標簽的顏色為白色;

  • 邊界間隙為[0, 0.01],表示x軸的起始和結束位置會留有一定的空白。

y軸配置:

  • 類型為'category',表示y軸為類目軸;

  • 軸標簽的顏色為白色;

  • y軸的類目數據包括了多個汽車品牌名稱。

Echarts-category?類目軸,適用于離散的類目數據。為該類型時類目數據可自動從?series.data?或?dataset.source?中取,或者可通過?yAxis.data?設置類目數據。

series:type:'category'?柱狀圖(或稱條形圖)是一種通過柱形的高度(橫向的情況下則是寬度)來表現數據大小的一種常用圖表類型。

type:'line'?折線圖是用折線將各個數據點標志連接起來的圖表,用于展現數據的變化趨勢。

 ? ?xAxis: { ? ? ?type: 'value', ? ? ?axisLabel: { ? ? ? ?color: 'white', ? ? ?}, ? ? ?boundaryGap: [0, 0.01], ? ?}, ? ?yAxis: { ? ? ?type: 'category', ? ? ?axisLabel: { ? ? ? ?color: 'white', ? ? ?}, ? ? ?data: [], ? ?}, ? ? series: [ ? ? ?{ ? ? ? ?name: '', ? ? ? ?type: 'bar', ? ? ? ?label: { ? ? ? ? ?show: true, ? ? ? ?}, ? ? ? ?data: [], ? ? ?}, ? ?],

熱力圖

ECharts 熱力圖是一種數據可視化的圖表類型,它通過顏色的深淺來表示數據的大小或密集程度。在熱力圖中,數據通常以矩形網格的形式呈現,每個小矩形格子的顏色深淺代表該位置上的數據大小,一般使用漸變色來表達數據的強弱。

  • min:表示熱力圖數據值中的最小值。在熱力圖中,所有小于或等于?min?的數據值都將被視為該范圍的下限,通常用于確定顏色映射的起始點。

  • max:表示熱力圖數據值中的最大值。相應地,所有大于或等于?max?的數據值都將被視為該范圍的上限,用于確定顏色映射的終點。

可以從實現的效果圖中看出,熱力圖數據基本都是0.xx,所以我將最大值設置為1.0,如果設置的數值過大,會出現所有顏色基本一致的情況,看不出具體差異。

 visualMap: { ? ? ?min: -0.75, ? ? ?max: 1.0, ? ? ?calculable: true, ? ? ?orient: 'horizontal', ? ? ?left: 'center', ? ? ?bottom: '15%', ? ?}, ? ?series: [ ? ? ?{ ? ? ? ?name: 'Punch Card', ? ? ? ?type: 'heatmap', ? ? ? ?data: data, ? ? ? ?label: { ? ? ? ? ?show: true, ? ? ? ?}, ? ? ? ?emphasis: { ? ? ? ? ?itemStyle: { ? ? ? ? ? ?shadowBlur: 10, ? ? ? ? ? ?shadowColor: 'rgba(0, 0, 0, 0.5)', ? ? ? ? ?}, ? ? ? ?}, ? ? ?}, ? ?],

中國地圖

注冊地圖

在 ECharts 中,需要先注冊地圖類型才能使用。對于中國地圖,可以使用?echarts.registerMap?方法注冊地圖數據。注冊時,需要指定地圖的名稱(如'china')和地圖數據(即之前準備的 JSON 數據文件)。

配置地圖選項

通過配置 ECharts 實例的?option?屬性,可以定義地圖的顯示樣式、數據系列、提示框、視覺映射組件(visualMap)等。對于該地圖,通常需要設置地圖的標題、數據系列類型為'map'、地圖類型為'china'等。同時,還可以通過?series?屬性中的?data?數組來設置各個省份或城市的數據,這些數據將用于控制地圖上的顏色深淺或圖標大小等。

渲染地圖

配置完?option?屬性后,調用 ECharts 實例的?setOption?方法,將配置對象傳入,即可渲染出中國地圖。

此時,地圖將按照配置顯示數據,并支持交互操作,如縮放、拖動等。

myEcharts.setOption({ ? ?// geo地理坐標系組件 支持在地理坐標系上繪制散點圖,線集 ? ?geo: { ? ? ?map: 'china', // 中國地圖 ? ? ?roam: true, // 是否開啟放大縮小/拖拽功能 ? ? ?//地圖的位置調試 ? ? ?left: 150, ? ? ?top: 120, ? ? ?right: 150, ? ? ?bottom: 0, ? ? ?// 縮放比列 ? ? ?zoom: 1.12, ? ? ?// 地圖中心點位置 ? ? ?layoutCenter: ['50%', '50%'], ? ? ?//地圖上的文字的設置 ? ? ?label: { ? ? ? ?show: true, ? ? ? ?color: 'white', ? ? ? ?fontSize: 14, ? ? ?}, ? ? ?// itemStyle地圖區域的多邊形 圖形樣式 ? ? ?itemStyle: { ? ? ? ?areaColor: '#12235c', // 地圖區域的顏色 ? ? ? ?// borderColor: '#2ab8ff', // 圖形的描邊顏色 ? ? ? ?borderColor: 'rgba(147, 235, 248, 1)', ? ? ? ?borderWidth: 0.8, ? ? ? ?shadowColor: 'rgba(128, 217, 248, .8)', ? ? ? ?shadowOffsetX: -2, ? ? ? ?shadowOffsetY: 2, ? ? ? ?shadowBlur: 10, ? ? ? ?opacity: 0.9, ? ? ?}, ? ? ?//地圖高亮的效果 ? ? ?emphasis: { ? ? ? ?label: { ? ? ? ? ?color: 'white', ? ? ? ? ?fontSize: 32, ? ? ? ? ?// fontWeight: 'bold', ? ? ? ?}, ? ? ? ?itemStyle: { ? ? ? ? ?// areaColor: '#5470c6', ? ? ? ? ?borderWidth: 2, ? ? ? ? ?borderType: 'dashed', // 高亮時虛線邊框 ? ? ? ?}, ? ? ? ?// focus: 'self', // 鼠標移入地區,其余地區淡出 ? ? ?}, ? ?}, ? ?//布局位置 ? ?grid: { ? ? ?left: 0, ? ? ?top: 0, ? ? ?right: 0, ? ? ?bottom: 0, ? ?}, ? ?// 航線的設置 series-lines ? ?series: [ ? ? ?{ ? ? ? ?type: 'lines', //航線的系列 ? ? ? ?data: [ ? ? ? ? ?{ ? ? ? ? ? ?// 北京->河南 ? ? ? ? ? ?coords: [ ? ? ? ? ? ? ?[116.405285, 39.904989], // 起點 ? ? ? ? ? ? ?[113.665412, 34.757975], // 終點 ? ? ? ? ? ?], ? ? ? ? ?}, ? ? ? ? ?{ ? ? ? ? ? ?// 河南->北京 ? ? ? ? ? ?coords: [ ? ? ? ? ? ? ?[113.665412, 34.757975], ? ? ? ? ? ? ?[116.405285, 39.904989], ? ? ? ? ? ?], ? ? ? ? ?}, ? ? ? ? ?{ ? ? ? ? ? ?// 北京->黑龍江 ? ? ? ? ? ?coords: [ ? ? ? ? ? ? ?[116.405285, 39.904989], ? ? ? ? ? ? ?[126.642464, 45.756967], ? ? ? ? ? ?], ? ? ? ? ?}, ? ? ? ? ?{ ? ? ? ? ? ?// 黑龍江->北京 ? ? ? ? ? ?coords: [ ? ? ? ? ? ? ?[126.642464, 45.756967], ? ? ? ? ? ? ?[116.405285, 39.904989], ? ? ? ? ? ?], ? ? ? ? ?}, ? ? ? ? ?{ ? ? ? ? ? ?// 河南->浙江 ? ? ? ? ? ?coords: [ ? ? ? ? ? ? ?[113.665412, 34.757975], ? ? ? ? ? ? ?[120.153576, 30.287459], ? ? ? ? ? ?], ? ? ? ? ?}, ? ? ? ? ?{ ? ? ? ? ? ?// 浙江->河南 ? ? ? ? ? ?coords: [ ? ? ? ? ? ? ?[120.153576, 30.287459], ? ? ? ? ? ? ?[113.665412, 34.757975], ? ? ? ? ? ?], ? ? ? ? ?}, ? ? ? ? ?{ ? ? ? ? ? ?// 浙江->臺灣 ? ? ? ? ? ?coords: [ ? ? ? ? ? ? ?[120.153576, 30.287459], ? ? ? ? ? ? ?[121.509062, 25.044332], ? ? ? ? ? ?], ? ? ? ? ?}, ? ? ? ?], ? ? ? ?// 開啟動畫特效 ? ? ? ?effect: { ? ? ? ? ?show: true, ? ? ? ? ?period: 5, // 箭頭指向速度,值越小速度越快 ? ? ? ? ?trailLength: 0, // 特效尾跡長度[0,1]值越大,尾跡越長重 ? ? ? ? ?// symbol: 'arrow', // 箭頭圖標 ? ? ? ? ?symbol: planePath, // 箭頭圖標使用引入的箭頭 ? ? ? ? ?symbolSize: 18, ? ? ? ?}, ? ? ? ?// 線路統一的樣式設置 ? ? ? ?lineStyle: { ? ? ? ? ?color: '#00eaff', ? ? ? ? ?width: 1.5, //尾跡線條寬度 ? ? ? ? ?opacity: 0.7, //尾跡線條透明度 ? ? ? ? ?curveness: 0.3, //尾跡線條曲直度 ? ? ? ?}, ? ? ?}, ? ?], ?})

到此為止,整個大屏基本上就開發完成了!

AI 能力體驗

在整個項目的開發過程中,真切體會到豆包MarsCode 內置 AI 的強大,于是單獨列個模塊再來介紹一下。

AI 對話視圖

側邊聊天:側邊對話框(Side AI Chat)位于工作區右側。你可以通過快捷鍵(macOS:?+U;Windows:Ctrl+U)喚起對話框,或直接點擊側邊欄中的 AI 按鈕喚起。

圖片

內嵌聊天:當我們選中一段代碼之后會自動彈出 AI 功能導航,可以進行代碼解釋、注釋、生成單元測試。

圖片

代碼注釋:自己不想寫的時候可以直接通過 AI 來生成,通過選擇 Y、N 即可決定是否使用自動生成的注釋。

圖片

使用 AI 能力

AI 問答:喚起對話框后,你可以在輸入框中輸入你的問題,然后點擊「發送」按鈕或敲擊回車鍵,AI 助手就會對你的問題進行回答。你可以進行多輪問答,不斷補充細節,從而使 AI 助手的回答更加準確。

補全代碼:?AI 助手支持自動補全當前代碼。

圖片

總結

豆包MarsCode 編程助手是一款功能強大的開發工具,它通過集成先進的 AI 技術,為開發者提供了從代碼編寫到測試、維護的全流程支持。在整個開發流程中,我都真切感受到了在線開發工具的便捷、高效、流暢。對于希望提高開發效率、降低維護成本并提升軟件質量的團隊來說,是一個值得考慮的選擇!

歡迎感興趣的各位進一步查閱其官方文檔和社區資源,更深入地了解其功能和實踐。

圖片

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

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

相關文章

游戲引擎學習第42天

倉庫: https://gitee.com/mrxiao_com/2d_game 簡介 目前我們正在研究的內容是如何構建一個基本的游戲引擎。我們將深入了解游戲開發的每一個環節&#xff0c;從最基礎的技術實現到高級的游戲編程。 角色移動代碼 我們主要討論的是角色的移動代碼。我一直希望能夠使用一些基…

Redis是什么?Redis和MongoDB的區別在那里?

Redis介紹 Redis&#xff08;Remote Dictionary Server&#xff09;是一個開源的、基于內存的數據結構存儲系統&#xff0c;它可以用作數據庫、緩存和消息中間件。以下是關于Redis的詳細介紹&#xff1a; 一、數據結構支持 字符串&#xff08;String&#xff09; 這是Redis最…

計算機網絡中的三大交換技術詳解與實現

目錄 計算機網絡中的三大交換技術詳解與實現1. 計算機網絡中的交換技術概述1.1 交換技術的意義1.2 三大交換技術簡介 2. 電路交換技術2.1 理論介紹2.2 Python實現及代碼詳解2.3 案例分析 3. 分組交換技術3.1 理論介紹3.2 Python實現及代碼詳解3.3 案例分析 4. 報文交換技術4.1 …

[Python] 操作redis使用pipeline保證原子性

1. pipeline介紹 在Python中使用Redis的Pipeline可以使多個Redis命令在一個請求中批量執行&#xff0c;從而提高效率。redis-py庫提供了對Redis Pipeline的支持&#xff0c;下面是一個基本的例子&#xff1a; 首先&#xff0c;確保你已安裝了redis庫&#xff1a; pip instal…

Bug 解決 無法正常登錄或獲取不到用戶信息

目錄 1、跨域問題 2、后端代碼問題 3、前端代碼問題 我相信登錄這個功能是很多人做項目時候遇到第一個檻&#xff01; **看起來好像很簡單的登錄功能&#xff0c;實際上還是有點坑的&#xff0c;比如明明賬號密碼都填寫正確了&#xff0c;**為什么登錄后請求接口又說我沒登…

論文翻譯 | ChunkRAG: Novel LLM-Chunk Filtering Method for RAG Systems

摘要 使用大型語言模型&#xff08;LLM&#xff09;的檢索-增強生成&#xff08;RAG&#xff09;系統經常由于檢索不相關或松散相關的信息而生成不準確的響應。現有的在文檔級別操作的方法無法有效地過濾掉此類內容。我們提出了LLM驅動的塊過濾&#xff0c;ChunkRAG&#xff0…

Maven(生命周期、POM、模塊化、聚合、依賴管理)詳解

Maven構建項目的生命周期 在Maven出現之前&#xff0c;項目構建的生命周期就已經存在&#xff0c;軟件開發人員每天都在對項目進行清理&#xff0c;編譯&#xff0c;測試&#xff0c;部署等工作&#xff0c;這個過程就是項目構建的生命周期。雖然大家都在不停的做構建工作&…

jenkins harbor安裝

Harbor是一個企業級Docker鏡像倉庫?。 文章目錄 1. 什么是Docker私有倉庫2. Docker有哪些私有倉庫3. Harbor簡介4. Harbor安裝 1. 什么是Docker私有倉庫 Docker私有倉庫是用于存儲和管理Docker鏡像的私有存儲庫。Docker默認會有一個公共的倉庫Docker Hub&#xff0c;而與Dock…

【Python網絡爬蟲筆記】10- os庫存儲爬取數據

os庫的作用 操作系統交互&#xff1a;os庫提供了一種使用Python與操作系統進行交互的方式。使用os庫來創建用于存儲爬取數據的文件夾&#xff0c;或者獲取當前工作目錄的路徑&#xff0c;以便將爬取的數據存儲在合適的位置。環境變量操作&#xff1a;可以讀取和設置環境變量。在…

微信小程序從后端獲取的圖片,展示的時候上下沒有完全拼接,有縫隙【已解決】

文章目錄 1、index.wxml2、index.js3、detail.detail為什么 .rich-text-style 樣式可以生效&#xff1f;1. <rich-text> 組件的特殊性2. 類選擇器的作用范圍3. 樣式優先級4. line-height: 0 的作用5. 為什么直接使用 rich-text 選擇器無效&#xff1f; 總結 上下兩張圖片…

Linux-apache虛擬主機配置筆記

一、 安裝apache 有需要的話&#xff0c;可以去查看具體的apache的安裝apache安裝https://blog.csdn.net/m0_68472908/article/details/139348739?spm1001.2014.3001.5501 都可以使用本地yum源搭建本地yum源搭建https://blog.csdn.net/m0_68472908/article/details/14385692…

常用vim命令行-linux008

Vim 是一款功能強大的文本編輯器&#xff0c;廣泛應用于編程、配置文件編輯以及日常文本處理。Vim 在其命令行模式下提供了豐富的操作命令&#xff0c;這些命令能夠大幅提升編輯效率。以下是 Vim 中常用的命令及操作的總結&#xff0c;覆蓋了 Vim 中的基本操作、查找、替換、文…

xshell連接虛擬機,更換網絡模式:NAT->橋接模式

NAT模式&#xff1a;虛擬機通過宿主機的網絡訪問外網。優點在于不需要手動配置IP地址和子網掩碼&#xff0c;只要宿主機能夠訪問網絡&#xff0c;虛擬機也能夠訪問。對外部網絡而言&#xff0c;它看到的是宿主機的IP地址&#xff0c;而不是虛擬機的IP。但是&#xff0c;宿主機可…

【Spring Boot集成Shiro指南】

Spring Boot集成Shiro指南 一、添加Maven依賴 首先&#xff0c;需要在Spring Boot項目的pom.xml文件中添加Shiro相關的依賴。例如&#xff1a; <dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring</artifactId><ve…

SpringBoot使用Nacos進行application.yml配置管理

Nacos是阿里巴巴開源的一個微服務配置管理和服務發現的解決方案。它提供了動態服務發現、配置管理和 服務管理平臺。Nacos的核心功能包括服務發現、配置管理和動態服務管理&#xff0c;使得微服務架構下的服務治理 變得簡單高效。 Nacos的設計基于服務注冊與發現、配置管理、動…

Electron-Vite 項目搭建(Vue)

前提條件 Node.js: 確保已安裝 Node.js 版本 18 或更高版本 (推薦使用最新穩定版)。Vite: 確保 Vite 版本為 4.0 或以上。包管理工具: 推薦使用 pnpm&#xff0c;但也可以使用 npm 或 yarn。 安裝 Electron-Vite 首先&#xff0c;在項目中安裝 electron-vite 作為開發依賴&a…

STM32F103單片機HAL庫串口通信卡死問題解決方法

在上篇文章 STM32F103單片機使用STM32CubeMX創建IAR串口工程 中分享了使用cubeMX直接生成串口代碼的方法&#xff0c;在測試的過程中無意間發現&#xff0c;串口會出現卡死的問題。 當串口一次性發送十幾個數據的時候&#xff0c;串口感覺像卡死了一樣&#xff0c;不再接收數據…

【Neo4J】neo4j docker容器下的備份與恢復

文章目錄 一. 官網說明1. 操作說明2. 注意事項 二. docker 容器化操作1. 導出&#xff08;備份&#xff09;停止容器執行備份 2. 導入&#xff08;恢復&#xff09;停止容器(如果未停止)執行導入 3. 啟動容器 一. 官網說明 https://neo4j.com/docs/operations-manual/current/…

selenium自動爬蟲工具

一、介紹selenium爬蟲工具 selenium 是一個自動化測試工具&#xff0c;可以用來進行 web 自動化測試、爬蟲 selenium 本質是通過驅動瀏覽器&#xff0c;完全模擬瀏覽器的操作&#xff0c;比如跳轉、輸入、點擊、下拉等&#xff0c;來拿到網頁渲染之后的結果&#xff0c;可支持…

Unity開發數字孿生項目

前言&#xff1a;記錄下自己用Unity開發數字孿生項目&#xff0c;所用到的知識點、功能點以及對項目認知總結&#xff0c;當然還有開發過程中所遇到的坑。此篇博客也是會隨時進行更新。 &#x1f60a;屏幕前看到此片文章的開發者們在此類項目開發過程中少走些彎路&#xff0c;希…