Vue?項(xiàng)目中Echarts?5使用方法詳解
前言
Echarts
是一個(gè)純JavaScript
的圖表庫(kù),兼容絕大部分的瀏覽器,底層依賴輕量級(jí)的canvas
類庫(kù)ZRender
,提供直觀,生動(dòng),可交互,可高度個(gè)性化定制的數(shù)據(jù)可視化圖表。
創(chuàng)建項(xiàng)目
先使用vue-cli
創(chuàng)建一個(gè)新的項(xiàng)目,配置按照自己的需要選擇,默認(rèn)的也可
vue create vue_echarts cd vue_echarts npm run serve
基本使用
安裝
首先安裝echarts
npm i echarts -S
使用方法
關(guān)于如何使用,我們可以閱讀官方文檔,寫的挺詳細(xì)的,總的來(lái)說(shuō)需要把握以下兩點(diǎn):
- 在繪圖前我們需要為
ECharts
準(zhǔn)備一個(gè)給定寬高的圖表容器(DOM
元素) - 繪圖時(shí),首先通過
Echarts
的init
方法初始化一個(gè)echarts
實(shí)例,然后通過setOption
方法導(dǎo)入圖表配置來(lái)完成繪制
下面是以上兩點(diǎn)的具體代碼,只是理解用:
<template> <-- DOM 容器 --> <div style="width: 400px; height: 250px" ref="echarts"></div> </template> <script> // 全局引入 echarts import * as echarts from "echarts"; // 初始化實(shí)例 const myChart = echarts.init(this.$refs.echarts); // 繪制(提前配置好option) myChart.setOption(option); </script>
官方的示例中其實(shí)是通過id
來(lái)獲取圖表容器
還是不建議這樣做,一個(gè)是因?yàn)槿绻?code>id重名了會(huì)導(dǎo)致頁(yè)面渲染出現(xiàn)問題;再一個(gè)是頁(yè)面較復(fù)雜時(shí)會(huì)導(dǎo)致Echarts
的圖表容器還未生成就對(duì)其進(jìn)行了初始化,所以還是使用ref
來(lái)代替
柱狀圖
下面以常見的柱狀圖為例,來(lái)展示如何在我們的項(xiàng)目中使用echarts
:
首先創(chuàng)建一個(gè)ref="echarts"
的div
元素作為圖表容器
<div style="width: 400px; height: 300px" ref="echarts"></div>
然后引入echarts
import * as echarts from "echarts";
在methods
中定義一個(gè)繪制圖表的方法,并在mounted()
鉤子中調(diào)用
methods: { getEcharts() { const myEcharts = echarts.init(this.$refs.echarts); myEcharts.setOption(this.option); }, }, mounted() { this.getEcharts(); },
option
為圖標(biāo)配置的相關(guān)數(shù)據(jù),定義在data()
中
data() { return { option: { title: { text: "ECharts 柱狀圖", }, legend: { data: ["銷量"], }, xAxis: { data: ["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"], }, yAxis: {}, series: [ { name: "銷量", type: "bar", data: [5, 20, 36, 10, 10, 20], }, ], }, }; },
現(xiàn)在就可以在瀏覽器中看到繪制出的柱狀圖了:
現(xiàn)在回過頭來(lái)看看option
中的配置項(xiàng)都表示什么含義
參數(shù)名 | 作用 |
---|---|
title | 圖表名稱 |
legend | 配置圖例相關(guān),比如圖例的位置、內(nèi)容等 |
xAxis/yAxis | 配置x/y軸相關(guān),比如坐標(biāo)軸數(shù)值、刻度等 |
series | 配置圖表系列相關(guān),比如圖表類型(series.type)、數(shù)據(jù)集(series.data)等 |
color | 圖表的調(diào)色盤,可以全局配置,也可以對(duì)某種圖表單獨(dú)配置 |
動(dòng)態(tài)排序柱狀圖
上面的基本柱狀圖好像有些基礎(chǔ)(low),下面來(lái)整個(gè)花里胡哨的。 ECharts 5
開始內(nèi)置支持動(dòng)態(tài)排序柱狀圖,也即展示隨時(shí)間變化的數(shù)據(jù)排名變化的圖表。
圖表容器我們不做改變,首先準(zhǔn)備好一個(gè)隨機(jī)數(shù)組data
<script> var data = []; for (let i = 0; i < 5; ++i) { data.push(Math.round(Math.random() * 200)); } </script>
然后對(duì)option
作如下配置
data() { return { option: { title: { text: "ECharts 動(dòng)態(tài)排序柱狀圖", }, xAxis: { max: "dataMax", }, yAxis: { type: "category", data: ["A", "B", "C", "D", "E"], inverse: true, animationDuration: 300, animationDurationUpdate: 300, max: 2, }, series: [ { realtimeSort: true, type: "bar", data: data, // 數(shù)據(jù)為隨機(jī)數(shù)數(shù)組 label: { show: true, position: "right", valueAnimation: true, }, }, ], legend: { show: true, }, animationDuration: 3000, animationDurationUpdate: 3000, animationEasing: "linear", animationEasingUpdate: "linear", }, } }
series
中的realtimeSort
設(shè)為true
,表示開啟該系列的動(dòng)態(tài)排序效果yAxis.inverse
設(shè)為true
,表示 Y 軸從下往上是從小到大的排列- 將
yAxis.max
設(shè)為n
,表示顯示前n+1
名 - 將
series.label.valueAnimation
設(shè)為true
,就可以實(shí)時(shí)改變標(biāo)簽 animationDuration
、animationDurationUpdate
、animationEasing
和animationEasingUpdate
都是一些過渡動(dòng)畫相關(guān)的配置,想進(jìn)一步了解的可以閱讀官網(wǎng)的相關(guān)介紹
還沒完,我們還需要初始化實(shí)例并調(diào)用:
methods: { getEcharts() { let data = this.option.series[0].data; for (var i = 0; i < data.length; ++i) { if (Math.random() > 0.9) { data[i] += Math.round(Math.random() * 2000); } else { data[i] += Math.round(Math.random() * 200); } } const myEcharts = echarts.init(this.$refs.echarts); myEcharts.setOption(this.option); }, }, mounted() { setInterval(() => { this.getEcharts(); }, 3000); },
這里每3s
調(diào)用了一次setOption
來(lái)改變圖表數(shù)據(jù),時(shí)間應(yīng)與每次更新動(dòng)畫時(shí)長(zhǎng),也即animationDurationUpdate
的值一致。
以上就是Vue 項(xiàng)目中Echarts 5使用方法詳解的詳細(xì)內(nèi)容,更多關(guān)于Vue 項(xiàng)目使用Echarts 5的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
vue中同時(shí)監(jiān)聽多個(gè)參數(shù)的實(shí)現(xiàn)
這篇文章主要介紹了vue中同時(shí)監(jiān)聽多個(gè)參數(shù)的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04基于iview-admin實(shí)現(xiàn)動(dòng)態(tài)路由的示例代碼
這篇文章主要介紹了基于iview-admin實(shí)現(xiàn)動(dòng)態(tài)路由的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10Vue3使用ref和reactive管理狀態(tài)的代碼示例
ref 和 reactive 是 Composition API 中用來(lái)聲明響應(yīng)式數(shù)據(jù)的兩個(gè)核心函數(shù),在 Vue 3 中,使用 setup 語(yǔ)法糖可以更簡(jiǎn)潔地使用這些功能,本文將探討如何使用 ref 和 reactive 來(lái)管理狀態(tài),并解釋它們之間的區(qū)別,需要的朋友可以參考下2024-09-09vite+vue3項(xiàng)目集成ESLint與prettier的過程詳解
這篇文章主要介紹了vite+vue3項(xiàng)目中集成ESLint與prettier的相關(guān)知識(shí),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09Element-UI 解決el-table中圖片懸浮被遮擋問題小結(jié)
在開發(fā)中,發(fā)現(xiàn)element-ui在el-table中添加圖片懸浮顯示時(shí),會(huì)被單元格遮擋的問題,對(duì)于此問題解決其實(shí)也并不難,將懸浮圖片放在body節(jié)點(diǎn)下,通過定位顯示即可,感興趣的朋友跟隨小編一起看看吧2024-06-06Vue2+Elementui?Dialog實(shí)現(xiàn)封裝自定義彈窗組件
在日常的管理系統(tǒng)界面中,我們寫的最多的除了列表表格之外,就是各種彈窗組件,本文就來(lái)為大家詳細(xì)介紹一下Vue2如何結(jié)合Elementui?Dialog實(shí)現(xiàn)封裝自定義彈窗組件,希望對(duì)大家有所幫助2023-12-12