您好,登錄后才能下訂單哦!
小編給大家分享一下vue.js能不能使用echarts,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
vue.js能用echarts,具體操作方法:1、在控制臺(tái)中輸入“npm install echarts --save”命令安裝echarts依賴(lài);2、在main.js中進(jìn)行全局引入,就可以使用echarts創(chuàng)建圖表。
最近工作中需要用到echarts,由于項(xiàng)目是用的vue-cli開(kāi)發(fā)的。在網(wǎng)上搜到vue中合成了vue-echarts,但是不想使用vue中規(guī)定好的數(shù)據(jù)格式,于是就自己做了一個(gè)vue項(xiàng)目引用原生echarts的簡(jiǎn)單demo,實(shí)現(xiàn)過(guò)程如下:用了兩種實(shí)現(xiàn)方式
準(zhǔn)備工作
1、安裝echarts依賴(lài)
控制臺(tái)輸入:npm install echarts --save
2、全局引入
main.js中引入
import echarts from 'echarts' Vue.prototype.$echarts = echarts
創(chuàng)建圖表
第一種創(chuàng)建方式
在一個(gè).vue文件中引入多張圖表
創(chuàng)建WelcomePage.vue
<template> <div> <h2>第一種在vue中使用echart的方式</h2> <div class="charts"> <div id="barGraph" style="height: 350px;"></div> </div> <div class="charts"> <div id="pieGraph" style="height: 350px;"></div> </div> </div> </template>
<script> // 引入基本模板,按需加載 let echarts = require('echarts/lib/echarts'); // 引入柱狀圖 require('echarts/lib/chart/bar'); // 引入柱狀圖 require('echarts/lib/chart/pie'); require('echarts/lib/component/tooltip'); require('echarts/lib/component/title'); export default { name: "WelcomePage", data () { return { } }, mounted(){ this.drawBar(); this.drawPie(); }, methods:{ drawBar(){ // 基于dom,初始化echarts實(shí)例 let barGraph = echarts.init(document.getElementById('barGraph')); // 繪制圖表 barGraph.setOption({ title: { text: '全年產(chǎn)量趨勢(shì)圖', left: 'center' }, tooltip: { trigger: 'item', formatter: '{a} <br/> : {c}' }, legend: { left: 'center', data: ['本年', '上年'], bottom:0 }, xAxis: { type: 'category', name: 'x', splitLine: {show: false}, data: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'] }, grid: { left: '1%', right: '2%', bottom: '8%', containLabel: true }, yAxis: { type: 'category', name: 'y', splitLine: {show: true}, data:['10%','20%','30%','40%','50%','60%','70%','80%','90%','100%'] }, series: [ { name: '本年', type: 'line', data: [0.8, 0.98, 0.96, 0.27, 0.81, 0.47, 0.74, 0.23, .69, 0.25, 0.36, 0.56] }, { name: '上年', type: 'line', data: [1, 0.2, 0.4, 0.8, 0.16, 0.32, 0.64, 1.28, 5.6, 0.25, 0.63, 0.65, 0.12] }, ] }) }, drawPie(){ let pieGraph = echarts.init(document.getElementById('pieGraph')); pieGraph.setOption({ title : { text: '某站點(diǎn)用戶(hù)訪問(wèn)來(lái)源', subtext: '純屬虛構(gòu)', x:'center' }, tooltip : { trigger: 'item', formatter: "{a} <br/> : {c} (etwxyio%)" }, legend: { orient: 'vertical', left: 'left', data: ['直接訪問(wèn)','郵件營(yíng)銷(xiāo)','聯(lián)盟廣告','視頻廣告','搜索引擎'] }, series : [ { name: '訪問(wèn)來(lái)源', type: 'pie', radius : '55%', center: ['50%', '60%'], data:[ {value:335, name:'直接訪問(wèn)'}, {value:310, name:'郵件營(yíng)銷(xiāo)'}, {value:234, name:'聯(lián)盟廣告'}, {value:135, name:'視頻廣告'}, {value:1548, name:'搜索引擎'} ], itemStyle: { emphasis: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } } ] }) } } } </script>
實(shí)現(xiàn)效果如下圖:
第二種實(shí)現(xiàn)方式(以組件的形式)
創(chuàng)建父組件 father.vue
<div> <h2>{{ msg }}</h2> <p>第二種方式:通過(guò)組件的方式進(jìn)行頁(yè)面渲染</p> <div class="container" > <bar-graph></bar-graph> </div> <div class="container"> <pie-graph></pie-graph> </div> </div>
<script> // 引入兩個(gè)子組件 import BarGraph from "./bargraph"; import PieGraph from "./piegraph"; export default { name: "father", components:{ BarGraph, PieGraph, }, data(){ return{ msg: '我是爸爸,想看我的兒子,眼睛請(qǐng)往下移', } } } </script>
創(chuàng)建子組件barGraph.vue
<div> <p>{{ msg }}</p> <div class="charts"> <div :id="id" style="min-height: 350px;"></div> </div> </div>
<script> let echarts = require('echarts/lib/echarts'); // 引入柱狀圖 require('echarts/lib/chart/bar'); require('echarts/lib/component/tooltip'); require('echarts/lib/component/title'); // import echarts from 'echarts' export default { name: "bargraph", // props:['id'], // 第一種接收父親傳過(guò)來(lái)的值的方式 props: { id: { type: String, default: 'chart' } }, data(){ return { msg: "我是第一個(gè)子組件--bar", chart: null, } }, mounted(){ this.drawBar(); }, methods:{ drawBar(){ this.chart = echarts.init(document.getElementById(this.id)); let colors = ['#5793f3', '#d14a61', '#675bba']; this.chart.setOption( { color: colors, tooltip: { trigger: 'axis', axisPointer: { type: 'cross' } }, grid: { right: '20%' }, toolbox: { feature: { dataView: {show: true, readOnly: false}, restore: {show: true}, saveAsImage: {show: true} } }, legend: { data:['蒸發(fā)量','降水量','平均溫度'] }, xAxis: [ { type: 'category', axisTick: { alignWithLabel: true }, data: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'] } ], yAxis: [ { type: 'value', name: '蒸發(fā)量', min: 0, max: 250, position: 'right', axisLine: { lineStyle: { color: colors[0] } }, axisLabel: { formatter: '{value} ml' } }, { type: 'value', name: '降水量', min: 0, max: 250, position: 'right', offset: 80, axisLine: { lineStyle: { color: colors[1] } }, axisLabel: { formatter: '{value} ml' } }, { type: 'value', name: '溫度', min: 0, max: 25, position: 'left', axisLine: { lineStyle: { color: colors[2] } }, axisLabel: { formatter: '{value} °C' } } ], series: [ { name:'蒸發(fā)量', type:'bar', data:[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3] }, { name:'降水量', type:'bar', yAxisIndex: 1, data:[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3] }, { name:'平均溫度', type:'line', yAxisIndex: 2, data:[2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2] } ] } ) } } } </script>
創(chuàng)建pieGraph.vue
<template> <div> <p>{{ msg }}</p> <div class="charts"> <div :id="id" style="min-height: 350px;"></div> </div> </div> </template>
<script> import echarts from 'echarts' export default { name: "piegraph", props:{ id: { type: String, default: 'pieChart' } }, data(){ return{ msg: '我是第二個(gè)子組件--pie', pieChart: null } }, mounted(){ this.drawPie(); }, methods: { drawPie () { this.pieChart = echarts.init(document.getElementById(this.id)); this.pieChart.setOption( { title : { text: '某站點(diǎn)用戶(hù)訪問(wèn)來(lái)源', subtext: '純屬虛構(gòu)', x:'center' }, tooltip : { trigger: 'item', formatter: "{a} <br/> : {c} (vyjjnpp%)" }, legend: { orient: 'vertical', left: 'left', data: ['直接訪問(wèn)','郵件營(yíng)銷(xiāo)','聯(lián)盟廣告','視頻廣告','搜索引擎'] }, series : [ { name: '訪問(wèn)來(lái)源', type: 'pie', radius : '55%', center: ['50%', '60%'], data:[ {value:335, name:'直接訪問(wèn)'}, {value:310, name:'郵件營(yíng)銷(xiāo)'}, {value:234, name:'聯(lián)盟廣告'}, {value:135, name:'視頻廣告'}, {value:1548, name:'搜索引擎'} ], itemStyle: { emphasis: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } } ] } ) } } } </script>
效果實(shí)現(xiàn)如下:
路由文件如下:
import WelcomePage from '@/components/WelcomePage' import Father from '@/components/father' import BarGraph from '@/components/bargraph' import PieGraph from '@/components/piegraph' export default new Router({ routes: [ { path: '/', name: 'WelcomePage', component: WelcomePage }, { path: '/father', name: 'father', component: Father, children:[ { path: '/bargraph', name: 'bargraph', component: BarGraph }, { path: '/piegraph', name: 'piegraph', component: PieGraph } ] }, ] })
以上是“vue.js能不能使用echarts”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。