uniapp引入echarts圖表(兼容H5端和微信小程序)

1粘我、引入echarts組件

在Dcloud插件市場下載echarts插件https://ext.dcloud.net.cn/plugin?id=4899
文檔描述支持vue2、vue3,我這里使用的vue3
下載插件壓縮包解壓后會得到一下幾個文件

image.png

選擇插件components文件夾下中的所有文件復(fù)制到自己項目的components文件夾內(nèi)
image.png

選擇插件static文件夾下中的echarts.min.js和ecStat.min.js復(fù)制到自己項目的static文件夾內(nèi)
image.png

由于發(fā)布小程序的主包大小不超多1.5M,建議在echarts官網(wǎng)(https://echarts.apache.org/zh/builder.html)下載中定制自己項目所需用到的圖表類型逊抡,我的項目只用到折線圖和餅圖,所以我只定制了這兩種同辣,點擊下載就得到了echarts.min.js工坊,最后將下載的echarts.min.js替換原插件中的echarts.min.js
image.png

我的目錄結(jié)構(gòu)如下:
src文件:
image.png

components文件:
image.png

static文件:
image.png

2、封裝自定義echarts組件

image.png

在components文件夾下創(chuàng)建cusEcharts文件夾恋拷,里面創(chuàng)建一個index.vue文件同于封裝echarts組件资厉,內(nèi)容如下:
注:H5端和小程序引入echarts方式不同,小程序只支持require方式引入蔬顾,H5端使用npm安裝

npm install echarts@^5.3.3 -s
<!-- 圖表組件 -->
<template>
    <view class="chart_content_item">
        <LEchart ref="chartRef"></LEchart>
    </view>
</template>

<script lang="ts" setup>
    import LEchart from "@/components/l-echart/l-echart.vue"
    import { ref, onMounted, watch } from "vue"
    // #ifdef H5
    import * as echarts from 'echarts'
    // #endif
    // #ifdef MP-WEIXIN
    const echarts = require('../../static/echarts.min.js')
    // #endif
    const chartRef = ref()
    const props = defineProps({
        option: {
            type: Object
        }
    })
    onMounted(() => {
        setTimeout(() => {
            if (!chartRef.value) return
            chartRef.value.init(echarts, chart => {
                chart.setOption(props.option)
            })
        }, 300)
    })
    watch(() => props.option, (newVal, oldVal) => {
        if (chartRef.value) {
            chartRef.value.init(echarts, chart => {
                chart.setOption(newVal)
            })
        }
    }, { deep: true, immediate: true })
</script>

<style lang="scss" scoped>
    .chart_content_item {
        width: 100%;
        height: 100%;
    }
</style>

在同目錄下新建一個option.ts配置文件(這里引入echarts是項目中有漸變需求宴偿,沒有可以不用引入)
我這里數(shù)據(jù)配置用的是數(shù)據(jù)集的格式湘捎,可以根據(jù)自己喜歡配置


// #ifdef H5
import * as echarts from 'echarts'
// #endif
// #ifdef MP-WEIXIN
const echarts = require('../../static/echarts.min')
// #endif

//折線圖配置
export const lineOption = {
    legend: {
        show: true,
        data: [] as any[],
    },
    tooltip: {
        show: true,
        trigger: 'axis',
        confine: true,
        axisPointer: {
            type: 'line',
            snap: true
        },
        textStyle: {
            textShadowColor: "transparent",
            textShadowBlur: 5,
        }
    },
    grid: {
        left: '3%',
        right: '5%',
        top: '20%',
        bottom: '5%',
        containLabel: true
    },
    xAxis: {
        type: 'category',
        boundaryGap: false,
        axisTick: {
            show: true,
            inside: true
        },
        axisLine: {
            show: true,
            lineStyle: {
                color: '#707070'
            }
        },
        axisLabel: {
            textStyle: {
                color: "#A8ADCF"
            }
        }
    },
    yAxis: {
        type: 'value',
        name: "",
        nameTextStyle: {
            color: "#A8ADCF"
        },
        axisTick: {
            show: false
        },
        axisLine: {
            show: true,
            lineStyle: {
                color: '#707070'
            }
        },
        axisLabel: {
            textStyle: {
                color: "#A8ADCF"
            }
        },
        splitLine: {
            show: true,
            lineStyle: {
                type: 'dashed',
                color: 'rgba(112, 112, 112, 0.2)'
            }
        }
    },
    dataset: {
        source: [] as any[],
    },
    series: [
        {
            type: "line",
            smooth: true,
            symbol: 'none',
            lineStyle: {
                color: "#35ADFD",
                width: 1.5,
            },
            areaStyle: {
                show: true,
                color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [
                    {
                        offset: 0,
                        color: 'rgba(31, 215, 236, 0.1)'
                    },
                    {
                        offset: 0.5,
                        color: 'rgba(83, 169, 255, 0.1)'
                    },
                    {
                        offset: 1,
                        color: 'rgba(208, 222, 255, 0.1)'
                    }
                ])
            },
        }
    ],
    color: ['#83bff6']
}

// 餅圖配置
export const pieOption = {
    color: ['#009DFF', "#22E4FF", "#3BFFD0", "#04e38a", "#9dff86"],
    tooltip: {
        trigger: 'item',
        show: true
    },
    legend: {
        type: "scroll",
        top: "bottom",
        bottom: 0,
        itemWidth: 6,
        itemHeight: 6,
        icon: "circle", // 圖例圖形
        itemGap: 20,
    },
    dataset: {
        source: [] as any[]
    },
    series: [
        {
            type: 'pie',
            radius: ['40%', '63%'],
            center: ['50%', '48%'],
            avoidLabelOverlap: false,
            label: {
                show: true,
                position: 'outside',
                formatter: 'ieeppvb%',
            },
        }
    ]
}

3、組件引用

在所需文件引入組件(vue3引入就行窄刘,不需要注冊)


image.png

定義圖表數(shù)據(jù)伶棒,以及拷貝圖表配置


image.png

圖表數(shù)據(jù)賦值
image.png

圖表使用:


image.png

4疯汁、最終效果

H5端:


image.png

小程序:


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末枕扫,一起剝皮案震驚了整個濱河市丧荐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌翻伺,老刑警劉巖材泄,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異吨岭,居然都是意外死亡脸爱,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進(jìn)店門未妹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人空入,你說我怎么就攤上這事络它。” “怎么了歪赢?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵化戳,是天一觀的道長。 經(jīng)常有香客問我埋凯,道長点楼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任白对,我火速辦了婚禮掠廓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘甩恼。我一直安慰自己蟀瞧,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布条摸。 她就那樣靜靜地躺著悦污,像睡著了一般。 火紅的嫁衣襯著肌膚如雪钉蒲。 梳的紋絲不亂的頭發(fā)上切端,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天,我揣著相機(jī)與錄音顷啼,去河邊找鬼踏枣。 笑死昌屉,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的椰于。 我是一名探鬼主播怠益,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瘾婿!你這毒婦竟也來了蜻牢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤偏陪,失蹤者是張志新(化名)和其女友劉穎抢呆,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體笛谦,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡抱虐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了饥脑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恳邀。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖灶轰,靈堂內(nèi)的尸體忽然破棺而出谣沸,到底是詐尸還是另有隱情,我是刑警寧澤笋颤,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布乳附,位于F島的核電站,受9級特大地震影響伴澄,放射性物質(zhì)發(fā)生泄漏赋除。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一非凌、第九天 我趴在偏房一處隱蔽的房頂上張望举农。 院中可真熱鬧,春花似錦清焕、人聲如沸并蝗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽滚停。三九已至,卻和暖如春粥惧,著一層夾襖步出監(jiān)牢的瞬間键畴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留起惕,地道東北人涡贱。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像惹想,于是被迫代替她去往敵國和親问词。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容