Vue?項目中Echarts?5使用方法詳解
前言
Echarts 是一個純JavaScript的圖表庫,兼容絕大部分的瀏覽器,底層依賴輕量級的canvas類庫ZRender,提供直觀,生動,可交互,可高度個性化定制的數(shù)據(jù)可視化圖表。
創(chuàng)建項目
先使用vue-cli創(chuàng)建一個新的項目,配置按照自己的需要選擇,默認(rèn)的也可
vue create vue_echarts cd vue_echarts npm run serve
基本使用
安裝
首先安裝echarts
npm i echarts -S
使用方法
關(guān)于如何使用,我們可以閱讀官方文檔,寫的挺詳細(xì)的,總的來說需要把握以下兩點:
- 在繪圖前我們需要為
ECharts準(zhǔn)備一個給定寬高的圖表容器(DOM元素) - 繪圖時,首先通過
Echarts的init方法初始化一個echarts實例,然后通過setOption方法導(dǎo)入圖表配置來完成繪制
下面是以上兩點的具體代碼,只是理解用:
<template> <-- DOM 容器 --> <div style="width: 400px; height: 250px" ref="echarts"></div> </template> <script> // 全局引入 echarts import * as echarts from "echarts"; // 初始化實例 const myChart = echarts.init(this.$refs.echarts); // 繪制(提前配置好option) myChart.setOption(option); </script>
官方的示例中其實是通過id來獲取圖表容器

還是不建議這樣做,一個是因為如果id重名了會導(dǎo)致頁面渲染出現(xiàn)問題;再一個是頁面較復(fù)雜時會導(dǎo)致Echarts的圖表容器還未生成就對其進(jìn)行了初始化,所以還是使用ref來代替
柱狀圖
下面以常見的柱狀圖為例,來展示如何在我們的項目中使用echarts:
首先創(chuàng)建一個ref="echarts"的div元素作為圖表容器
<div style="width: 400px; height: 300px" ref="echarts"></div>
然后引入echarts
import * as echarts from "echarts";
在methods中定義一個繪制圖表的方法,并在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)在回過頭來看看option中的配置項都表示什么含義
| 參數(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)色盤,可以全局配置,也可以對某種圖表單獨配置 |
動態(tài)排序柱狀圖
上面的基本柱狀圖好像有些基礎(chǔ)(low),下面來整個花里胡哨的。 ECharts 5 開始內(nèi)置支持動態(tài)排序柱狀圖,也即展示隨時間變化的數(shù)據(jù)排名變化的圖表。
圖表容器我們不做改變,首先準(zhǔn)備好一個隨機(jī)數(shù)組data
<script>
var data = [];
for (let i = 0; i < 5; ++i) {
data.push(Math.round(Math.random() * 200));
}
</script>
然后對option作如下配置
data() {
return {
option: {
title: {
text: "ECharts 動態(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,表示開啟該系列的動態(tài)排序效果yAxis.inverse設(shè)為true,表示 Y 軸從下往上是從小到大的排列- 將
yAxis.max設(shè)為n,表示顯示前n+1名 - 將
series.label.valueAnimation設(shè)為true,就可以實時改變標(biāo)簽 animationDuration、animationDurationUpdate、animationEasing和animationEasingUpdate都是一些過渡動畫相關(guān)的配置,想進(jìn)一步了解的可以閱讀官網(wǎng)的相關(guān)介紹
還沒完,我們還需要初始化實例并調(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來改變圖表數(shù)據(jù),時間應(yīng)與每次更新動畫時長,也即animationDurationUpdate的值一致。

以上就是Vue 項目中Echarts 5使用方法詳解的詳細(xì)內(nèi)容,更多關(guān)于Vue 項目使用Echarts 5的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Vue?2中實現(xiàn)CustomRef方式防抖節(jié)流
這篇文章主要為大家介紹了Vue?2中實現(xiàn)CustomRef方式防抖節(jié)流示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
Vue公共loading升級版解決思路(處理并發(fā)異步差時響應(yīng))
這篇文章主要介紹了Vue公共loading升級版(處理并發(fā)異步差時響應(yīng)),解決思路是通過定義一個全局對象來存儲每個接口的響應(yīng)狀態(tài),直到每個請求接口都收到響應(yīng)才變更狀態(tài),結(jié)束loading動畫,需要的朋友可以參考下2023-11-11
vue-cli3項目升級到vue-cli4 的方法總結(jié)
這篇文章主要介紹了vue-cli3項目升級到vue-cli4 的方法總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03

