vue3中使用Vchart的示例代碼
使用vue開(kāi)發(fā)的web項(xiàng)目中使用圖表,可以使用v-charts,它基于 Vue 和 echarts 封裝的 v-charts 圖表組件,只需要統(tǒng)一提供一種對(duì)前后端都友好的數(shù)據(jù)格式設(shè)置簡(jiǎn)單的配置項(xiàng),便可輕松生成常見(jiàn)的圖表,避免了做繁瑣的數(shù)據(jù)類(lèi)型轉(zhuǎn)化、修改復(fù)雜的配置項(xiàng)。
步驟
1、npm 安裝
npm install echarts vue-echarts
2、在vue中使用
折線圖
代碼:
<template> <div> <h3>下載流量 <span style="font-weight: normal">7天內(nèi)趨勢(shì)</span></h3> <v-chart style="width: 100%; height: 210px" :option="(chartOptions as EChartsOption)" ></v-chart> </div> </template> <script setup lang="ts"> import { onMounted,ref } from 'vue' import { use } from 'echarts/core' import { LineChart } from 'echarts/charts' import { GridComponent, LegendComponent, TooltipComponent } from 'echarts/components' import VChart from 'vue-echarts' import { CanvasRenderer } from 'echarts/renderers' import type { EChartsOption } from 'echarts' import dayjs from 'dayjs' use([CanvasRenderer, LineChart, GridComponent, LegendComponent, TooltipComponent]) const sevenDays: string[] = [] const todayNow = dayjs() for (let i = 6; i >= 0; i--) { const day = todayNow.add(-i, 'days').format('YYYY/MM/DD') sevenDays.push(day) } const chartOptions = ref({ //提示框 tooltip: { trigger: 'axis', formatter: function (data: any) { let formatValue if (data[0] && data[0].value) { formatValue = `${Utils.getFileSize(data[0].value)}` } else { formatValue = 0 } return data[0].axisValueLabel + '<br />' + data[0].marker + formatValue } }, //橫軸配置 xAxis: { type: 'category', data: sevenDays, lineWidth: 0, left: '-2%', axisTick: { show: false } }, //縱軸配置 yAxis: { type: 'value', axisLabel: { formatter: (value: number) => { if (value) return `${Utils.getFileSize(value)}` return 0 } } }, //數(shù)據(jù)集配置 series: [ { data: [0, 0, 0, 0, 0, 0, 0], type: 'line' } ], grid: { top: '20px', bottom: '0px', left: '0px', right: '20px', containLabel: true } }) onMounted(() => { FirmReq.getFirmFlow(firmStore().profile?.id!).then((res) => { const daysData = [...sevenDays] //daysData = ['2024/01/10', '2024/01/11', '2024/01/12', '2024/01/13', '2024/01/14', '2024/01/15', '2024/01/16'] /** * 接口返回?cái)?shù)據(jù)res.data.data * [{dt: "2024/01/12",total: "13029932"},{dt: "2024/01/16",total: "18977"}] */ console.log('daysData', daysData) chartOptions.value.series = [ { type: 'line', data: daysData.map((day) => { const data = res.data.data.find( (_item: { dt: string; total: string }) => _item.dt == day ) if (data && data.total) return Number(data.total) return 0 }) } ] }) }) </script>
餅圖
代碼
<template> <div style="width: 100%; height: 80%; margin-top: 10px"> <v-chart class="chart" :option="deviceOption"></v-chart> </div> </template> <script setup lang="ts"> import { onMounted, ref} from 'vue' import { use } from 'echarts/core' import { CanvasRenderer } from 'echarts/renderers' import { PieChart } from 'echarts/charts' import type { EChartsOption } from 'echarts' import VChart from 'vue-echarts' use([CanvasRenderer, PieChart, TitleComponent, TooltipComponent, LegendComponent, GraphicComponent]) const deviceOption =ref({ tooltip: { trigger: 'item' }, legend: { orient: 'vertical', top: '10%', left: '55%', data: ['新版本', '舊版本'] }, series: [ { name:'固件Agent分布', type: 'pie', radius: ['60%', '90%'], center: ['25%', '50%'], avoidLabelOverlap: false, label: { show: false, position: 'center' }, labelLine: { show: false }, data: [ { value: 0, name: '新版本' }, { value: 0, name: '舊版本' } ] } ], color: ['#6095CA', '#BAC8DB'] }) onMounted(() => { StatisReq.teamDesktopVersion().then((res) => { const { latest, low } = res.data const deviceOptionLabel = `新版本 (${Number(latest)}臺(tái))` const deviceOptionLabel1 = `舊版本 (${Number(low)}臺(tái))` //更新餅圖數(shù)據(jù) deviceOption.value.series[0].data[0] = { value: Number(latest), name: deviceOptionLabel } deviceOption.value.series[0].data[1] = { value: Number(low), name: deviceOptionLabel1 } deviceOption.value.legend.data[0] = deviceOptionLabel deviceOption.value.legend.data[1] = deviceOptionLabel1 }) }) </script>
3、添加圖例點(diǎn)擊事件
// 組件添加legendselectchanged事件 <v-chart :option="option2" @legendselectchanged="legendselectchanged"></v-chart> // script標(biāo)簽中代碼 const legendselectchanged = (res) => { // 點(diǎn)擊圖例默認(rèn)會(huì)改變系列的顯示狀態(tài) // 自定義圖例點(diǎn)擊事件需要先阻止這個(gè)默認(rèn)事件 // legend: {selectedMode: false},這個(gè)屬性可以使點(diǎn)擊事件不起效,但同樣自定義legendselectchanged 事件也會(huì)失效,因此不能通過(guò) selectedMode: false 來(lái)控制 // option2.value.legend.selected = {[res.name] : true};這句代碼可以使點(diǎn)擊的圖例系列重新顯示 option2.value.legend.selected = {[res.name] : true}; //下面就可以做一些你想做的功能 // ..... }
到此這篇關(guān)于vue3中使用Vchart的示例代碼的文章就介紹到這了,更多相關(guān)vue3使用Vchart內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- vue3+echarts實(shí)現(xiàn)好看的圓角環(huán)形圖
- echarts設(shè)置tootip輪播切換展示(vue3搭配vue-echarts粘貼即用)
- 手把手教你Vue3?按需引入?Echarts的過(guò)程(收藏)
- vue導(dǎo)出excel和echart圖形分別在不同工作表的實(shí)現(xiàn)方法
- vue使用echarts實(shí)現(xiàn)柱狀圖動(dòng)態(tài)排序效果
- vue2.0如何實(shí)現(xiàn)echarts餅圖(pie)效果展示
- vue中如何使用echarts動(dòng)態(tài)渲染數(shù)據(jù)
- vue使用echarts實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)的示例詳解
- Vuex進(jìn)行Echarts數(shù)據(jù)頁(yè)面初始化后如何更新dom
- vue+echarts圖表的基本使用步驟總結(jié)
- 在Vue中使用Echarts+封裝
- 使用vue3+ts打開(kāi)echarts的正確方式
相關(guān)文章
基于Vue-Cli 打包自動(dòng)生成/抽離相關(guān)配置文件的實(shí)現(xiàn)方法
基于Vue-cli 項(xiàng)目產(chǎn)品部署,涉及到的交互的地址等配置信息,每次都要重新打包才能生效,極大的降低了效率。這篇文章主要介紹了基于Vue-Cli 打包自動(dòng)生成/抽離相關(guān)配置文件 ,需要的朋友可以參考下2018-12-12vue2 router 動(dòng)態(tài)傳參,多個(gè)參數(shù)的實(shí)例
下面小編就為大家?guī)?lái)一篇vue2 router 動(dòng)態(tài)傳參,多個(gè)參數(shù)的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11vue cli4中mockjs在dev環(huán)境和build環(huán)境的配置詳情
這篇文章主要介紹了vue cli4中mockjs在dev環(huán)境和build環(huán)境的配置詳情,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04使用vuex的state狀態(tài)對(duì)象的5種方式
本文給大家介紹了使用vuex的state狀態(tài)對(duì)象的5種方式,給大家貼出了我的vuex的結(jié)構(gòu),感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧2018-04-04vue中的事件加判斷條件如何進(jìn)行選擇性點(diǎn)擊
這篇文章主要介紹了vue中的事件加判斷條件如何進(jìn)行選擇性點(diǎn)擊方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03vue2中前端實(shí)現(xiàn)語(yǔ)音播報(bào)的詳細(xì)過(guò)程
vue中語(yǔ)音播報(bào),目前本人寫(xiě)的過(guò)程中,遇到了兩種情況,第一種是后端直接返回一個(gè)mp3的播放url,第二種就是播報(bào)的內(nèi)容需要前端自己拼接的,關(guān)于兩種方法,我都說(shuō)一下如何實(shí)現(xiàn),感興趣的朋友一起看看吧2024-07-07解決vuex數(shù)據(jù)異步造成初始化的時(shí)候沒(méi)值報(bào)錯(cuò)問(wèn)題
今天小編大家分享一篇解決vuex數(shù)據(jù)異步造成初始化的時(shí)候沒(méi)值報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11nuxt.js添加環(huán)境變量,區(qū)分項(xiàng)目打包環(huán)境操作
這篇文章主要介紹了nuxt.js添加環(huán)境變量,區(qū)分項(xiàng)目打包環(huán)境操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11Vue項(xiàng)目的甘特圖組件之dhtmlx-gantt使用教程和實(shí)現(xiàn)效果展示(推薦)
文章介紹了如何使用dhtmlx-gantt組件來(lái)實(shí)現(xiàn)公司的甘特圖需求,并提供了一個(gè)簡(jiǎn)單的Vue組件示例,文章還分享了一些配置項(xiàng),如格式化表頭日期、設(shè)置甘特圖尺寸、啟用只讀模式、設(shè)置表格列等,感興趣的朋友一起看看吧2025-02-02