前言
echarts4 官網:https://echarts.apache.org/v4/zh/option.html#series-scatter.coordinateSystem
echarts5 官網:https://echarts.apache.org/
echarts-liquidfill 水球圖插件官網: https://www.npmjs.com/package/echarts-liquidfill
官方效果圖:
我們可以基於上圖做樣式定製,如下圖
安裝
npm install echarts --save
npm install echarts-liquidfill --save
1. echarts-liquidfill 基於 echarts,所以要確保已經安裝了 echarts
2. echarts4 需要安裝 echarts-liquidfill@2.0.6 版本,echarts5 需要安裝 echarts-liquidfill@3.0.0 及以上版本
引入
echarts4 的引入方式
import Echarts from 'echarts'
import 'echarts-liquidfill’
echarts5 的引入方式
import * as echarts from 'echarts';
import 'echarts-liquidfill'
基本使用示例
1. 一個波浪
<template>
<div id="container" class="liquidfill-container"></div>
</template>
<script>
import 'echarts-liquidfill'
export default {
name: 'LiquidfillTest',
mounted () {
const data = [0.68] // 顯示一個波浪
const dom = document.getElementById('container')
const chart = this.$echarts.init(dom)
chart.setOption({
series: [{
type: 'liquidFill',
data: data
}]
})
}
}
</script>
<style lang="scss" scoped>
.liquidfill-container {
width: 100%;
height: 100%;
}
</style>
2. 顯示多個波浪
<template>
<div id="container" class="liquidfill-container"></div>
</template>
<script>
import 'echarts-liquidfill'
export default {
name: 'LiquidfillTest',
mounted () {
const data = [0.68, 0.5, 0.4] // 顯示多個波浪, 並且數值必須從大到小排列, 若從小到大排列,最大的波浪會遮擋住其餘比它小的波浪
const dom = document.getElementById('container')
const chart = this.$echarts.init(dom)
chart.setOption({
series: [{
type: 'liquidFill',
data: data
}]
})
}
}
</script>
<style lang="scss" scoped>
.liquidfill-container {
width: 100%;
height: 100%;
}
</style>
3. itemStyle,emphasis 屬性分別給其中一個波浪設置透明度以及 hover 後的樣式
<template>
<div id="container" class="liquidfill-container"></div>
</template>
<script>
import 'echarts-liquidfill'
export default {
name: 'LiquidfillTest',
mounted () {
const data = [0.68, 0.5, { // 如果只想給其中某一個波浪,比如最後一個波浪設置透明度以及鼠標移入的透明度
value: 0.4,
itemStyle: {
opacity: 0.6
},
emphasis: {
itemStyle: {
opacity: 0.9
}
}
}]
const dom = document.getElementById('container')
const chart = this.$echarts.init(dom)
chart.setOption({
series: [{
type: 'liquidFill',
data: data
}]
})
}
}
</script>
<style lang="scss" scoped>
.liquidfill-container {
width: 100%;
height: 100%;
}
</style>
4. direction設置波浪往不同的方向浮動,比如,一條波浪從左往右,另外兩條波浪從右往左
<template>
<div id="container" class="liquidfill-container"></div>
</template>
<script>
import 'echarts-liquidfill'
export default {
name: 'LiquidfillTest',
mounted () {
const data = [0.68, 0.5, { // 如果只想給其中某一個波浪,比如最後一個波浪設置透明度以及鼠標移入的透明度
value: 0.4,
direction: 'left', // 讓波浪往不同的方向浮動,比如這裏設置往左,未設置的波浪會往右
itemStyle: {
opacity: 0.6
},
emphasis: {
itemStyle: {
opacity: 0.9
}
}
}]
const dom = document.getElementById('container')
const chart = this.$echarts.init(dom)
chart.setOption({
series: [{
type: 'liquidFill',
data: data
}]
})
}
}
</script>
<style lang="scss" scoped>
.liquidfill-container {
width: 100%;
height: 100%;
}
</style>
5. shape 屬性改變水球的形狀,默認為 circle
<template>
<div id="container" class="liquidfill-container"></div>
</template>
<script>
import 'echarts-liquidfill'
export default {
name: 'LiquidfillTest',
mounted () {
const data = [0.68, 0.5, 0.4]
const dom = document.getElementById('container')
const chart = this.$echarts.init(dom)
chart.setOption({
series: [{
type: 'liquidFill',
data: data,
shape: 'diamond' // 改變水球圖的形狀,比如 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'
}]
})
}
}
</script>
<style lang="scss" scoped>
.liquidfill-container {
width: 100%;
height: 100%;
}
</style>
6. color 屬性,修改波浪的顏色
並會自動與下面代碼 data 中的數據從大到小進行映射,如,red-0.68;blue-0.5;yellow-0.4
<template>
<div id="container" class="liquidfill-container"></div>
</template>
<script>
import 'echarts-liquidfill'
export default {
name: 'LiquidfillTest',
mounted () {
const data = [0.68, 0.5, 0.4]
const dom = document.getElementById('container')
const chart = this.$echarts.init(dom)
chart.setOption({
series: [{
type: 'liquidFill',
data: data,
shape: 'circle', // 改變水球圖的形狀,比如 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'
color: ['red', 'blue', 'yellow'] // 修改波浪的顏色,並會自動與 data 中的數據從大到小進行映射,如,red-0.68;blue-0.5;yellow-0.4
}]
})
}
}
</script>
<style lang="scss" scoped>
.liquidfill-container {
width: 100%;
height: 100%;
}
</style>
7. background 屬性,修改水球圖背景顏色
<template>
<div id="container" class="liquidfill-container"></div>
</template>
<script>
import 'echarts-liquidfill'
export default {
name: 'LiquidfillTest',
mounted () {
const data = [0.68, 0.5, 0.4]
const dom = document.getElementById('container')
const chart = this.$echarts.init(dom)
chart.setOption({
series: [{
type: 'liquidFill',
data: data,
shape: 'circle', // 改變水球圖的形狀,比如 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'
color: ['red', 'blue', 'yellow'], // 修改波浪的顏色,並會自動與 data 中的數據從大到小進行映射,如,red-0.68;blue-0.5;yellow-0.4
backgroundStyle: {
color: 'purple', // 修改背景顏色
borderWidth: 4, // 修改背景邊框寬度
borderColor: 'green' // 修改背景邊框的顏色
}
}]
})
}
}
</script>
<style lang="scss" scoped>
.liquidfill-container {
width: 100%;
height: 100%;
}
</style>
8. outline 屬性,修改外層樣式
<template>
<div id="container" class="liquidfill-container"></div>
</template>
<script>
import 'echarts-liquidfill'
export default {
name: 'LiquidfillTest',
mounted () {
const data = [0.68, 0.5, 0.4]
const dom = document.getElementById('container')
const chart = this.$echarts.init(dom)
chart.setOption({
series: [{
type: 'liquidFill',
data: data,
shape: 'circle', // 改變水球圖的形狀,比如 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'
color: ['red', 'blue', 'yellow'], // 修改波浪的顏色,並會自動與 data 中的數據從大到小進行映射,如,red-0.68;blue-0.5;yellow-0.4
backgroundStyle: {
color: 'purple', // 修改背景顏色
borderWidth: 4, // 修改背景邊框寬度
borderColor: 'green' // 修改背景邊框的顏色
},
outline: { // 修改外層樣式
show: true,
borderDistance: 10, // 設置和外層輪廓的間距
itemStyle: {
borderWidth: 2, // 設置外層邊框寬度
borderColor: 'red', // 設置外層邊框顏色
shadowBlur: 'none' // 消除外層邊框陰影
}
}
}]
})
}
}
</script>
<style lang="scss" scoped>
.liquidfill-container {
width: 100%;
height: 100%;
}
</style>
注:因為想偷懶,水球效果圖沒有做動圖,所以有一些效果設置截圖後也看不出效果,我把完整示例和註釋附上😂
完整示例 Demo
<template>
<div id="container" class="liquidfill-container"></div>
</template>
<script>
import 'echarts-liquidfill'
export default {
name: 'LiquidfillTest',
mounted () {
// const data = [0.68] // 顯示一個波浪
// const data = [0.68, 0.5, 0.4] // 顯示多個波浪, 並且數值必須從大到小排列, 若從小到大排列,最大的波浪會遮擋住其餘比它小的波浪
const data = [0.68, 0.5, { // 如果只想給其中某一個波浪,比如最後一個波浪設置透明度以及鼠標移入的透明度
value: 0.4,
direction: 'left', // 讓波浪往不同的方向浮動,比如這裏設置往左,未設置的波浪會往右
itemStyle: {
opacity: 0.6
},
emphasis: {
itemStyle: {
opacity: 0.9
}
}
}]
const dom = document.getElementById('container')
const chart = this.$echarts.init(dom)
chart.setOption({
series: [{
type: 'liquidFill',
data: data,
// radius: '100%', // 半徑
shape: 'circle', // 改變水球圖的形狀,比如 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'
color: ['red', 'blue', 'yellow'], // 修改波浪的顏色,並會自動與 data 中的數據從大到小進行映射,如,red-0.68;blue-0.5;yellow-0.4
// itemStyle: { // 設置水球透明度
// opacity: 0.6
// },
// emphasis: { // 設置鼠標移入波浪後的透明度,不設置該數值,默認跟 itemStyle 中設置的一樣,為 0.6
// itemStyle: {
// opacity: 0.9
// }
// },
// waveAnimation: false, // 讓波浪停止繪製,從動態變為靜止,該屬性最好和 AnimationDuration, AnimationDurationUpdate 一起設置
// AnimationDuration: 0,
// AnimationDurationUpdate: 0,
amplitude: 10, // 控制波浪的振幅,為 0,怎會變為直線的波紋並且波浪為靜止,如果給 10,波紋明顯幅度變小,50 則會很陡峭
backgroundStyle: {
color: 'purple', // 修改背景顏色
borderWidth: 4, // 修改背景邊框寬度
borderColor: 'green' // 修改背景邊框的顏色
},
outline: { // 修改外層樣式
show: true,
borderDistance: 10, // 設置和外層輪廓的間距
itemStyle: {
borderWidth: 2, // 設置外層邊框寬度
borderColor: 'red', // 設置外層邊框顏色
shadowBlur: 'none' // 消除外層邊框陰影
}
}
// outline: { // 隱藏外層
// show: false
// }
}]
})
}
}
</script>
<style lang="scss" scoped>
.liquidfill-container {
width: 100%;
height: 100%;
}
</style>