成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

在vue項目中引用Antv G2,以餅圖為例講解

瀏覽:69日期:2022-11-10 08:33:53

我就廢話不多說了,大家還是直接看代碼吧~

npm install @antv/g2 --save

template內容:

<template> <div id='pieChart'></div></template>

js部分:

​//引入G2組件import G2 from '@antv/g2'; ​export default { name:'', //數據部分 data(){ return{ sourceData: [],//聲明一個數組 chart: {}, //全局定義chart對象 id: Math.random().toString(36).substr(2), //動態生成ID,便于多次引用 } }, //初始加載 mounted() { this.initComponent(); }, methods: { //初始化獲取數據 initStrateGoal() { debugger; let _this = this; _this.$http .$get('后臺接口地址') .then(function(response) { if (_this.$util.isBlank(response.data)) { return; } _this.sourceData = response.data; //調用繪圖方法 _this.getDrawing(_this.sourceData); }) .catch(function(error) { _this.$message.error(_this, error); }); }, //繪制圖形 getDrawing(sourceData) { let _this = this; // Step 1: 創建 Chart 對象 _this.chart = new G2.Chart({ container: _this.id, forceFit: true, height: 255, padding: [30, 0, 35, 0], animate: false // margin: [0, 500] }); let sumCount = 0; for (let i in sourceData) { sumCount = sumCount + Number(sourceData[i].count); } // Step 2: 載入數據源 _this.chart.source(sourceData, { percent: { formatter: function formatter(val) { val = val + '%'; return val; } } }); _this.chart.coord('theta', { radius: 0.75, innerRadius: 0.6 }); //消息提示 _this.chart.tooltip({ showTitle: false, itemTpl: ’<li><span class='g2-tooltip-marker'></span>{name}: {value}</li>’ }); // 輔助文本 _this.chart.guide().html({ position: ['50%', '50%'], html: ’<div style='color:#8c8c8c;font-size: 10px;text-align: center;width: 6em;'>目標總數<br><span style='color:#8c8c8c;font-size:14px'>’ + sumCount + '</span></div>', alignX: 'middle', alignY: 'middle' }); // Step 3:創建圖形語法,繪制餅圖 var interval = _this.chart .intervalStack() .position('percent') .color('item') .label('percent', { formatter: function formatter(val, item) { return item.point.item + ': ' + val; } }) .tooltip('item*percent', function(item, percent) { //數據顯示為百分比形式 percent = percent + '%'; return { name: item, value: percent }; }) .style({ lineWidth: 1, stroke: '#fff' }); // Step 4:最后一步渲染至畫布 _this.chart.render(); //初始加載圖片后默認顯示第一個條目突起,點擊后進行變更 interval.setSelected(sourceData[0]); }, //因為父級頁面用的事Tab調用,會有顯示不全的現象發生,所以銷毀所有對象后重新加載 reloadDrawing() { //銷毀畫布對象 this.chart.destroy(); //重新調用數據進行加載 this.initStrateGoal(); } } }

*父級頁面時tab調用,并且是一個頁面多次引用,有兩個坑

1.tab點擊時,有的頁面顯示不全,樣式也有問題,需要銷毀重構(只是我的個人方案,有其他方案的話可以推薦)

2.一個頁面有多個圖表,id是不能重復的,必須動態生成

補充知識:vue+antv與數據庫交互實現數據可視化圖表

一、安裝antv

npm install @antv/g2

二、在官網選擇自己需要的圖表

https://g2.antv.vision/zh/examples/gallery

這里以這個圖為例

在vue項目中引用Antv G2,以餅圖為例講解

右側就是實現這個圖的代碼,在這里加上.color(“type”)即可根據字段名顯示不同的顏色

在vue項目中引用Antv G2,以餅圖為例講解

這里數據的字段和值可以按需更改(更改字段名稱的話要把下面相關的字段名全部替換)

在vue項目中引用Antv G2,以餅圖為例講解

三、整合vue antv

在vue中引入antv

import { Chart } from '@antv/g2';

指定一個容器來放圖表

<template><div id='roomTypeCheckIn'></div></template>

替換默認的data數據

data() { return { mydata: [ { roomTypeName: '單人間', checkInValue: 654, checkInPercent: 0.02 }, { roomTypeName: '雙人間', checkInValue: 654, checkInPercent: 0.02 }, { roomTypeName: '鐘點房', checkInValue: 4400, checkInPercent: 0.2 }, { roomTypeName: '海景房', checkInValue: 5300, checkInPercent: 0.24 }, { roomTypeName: '主題房', checkInValue: 6200, checkInPercent: 0.28 }, { roomTypeName: '家庭房', checkInValue: 3300, checkInPercent: 0.14 }, { roomTypeName: '總統房', checkInValue: 1500, checkInPercent: 0.06 } ] }; },

把繪圖代碼復制進來

此處需要把默認的container:‘container’ 修改為自己指定的容器id,渲染數據時,將data修改為this.xxx(自己定義的數據名稱),不同的圖修改的地方可能會不同

在vue項目中引用Antv G2,以餅圖為例講解

methods: { initComponent() { const chart = new Chart({ container: 'roomTypeCheckIn', autoFit: true, height: 500, padding: [50, 20, 50, 20] }); chart.data(this.mydata); chart.scale('checkInValue', { alias: '銷售額' }); chart.axis('roomTypeName', { tickLine: { alignTick: false } }); chart.axis('checkInValue', false); chart.tooltip({ showMarkers: false }); chart .interval() .position('roomTypeName*checkInValue') .color('roomTypeName'); chart.interaction('element-active'); // 添加文本標注 this.mydata.forEach(item => { chart .annotation() .text({ position: [item.roomTypeName, item.checkInValue], content: item.checkInValue, style: { textAlign: 'center' }, offsetY: -30 }) .text({ position: [item.roomTypeName, item.checkInValue], content: (item.checkInPercent * 100).toFixed(0) + '%', style: { textAlign: 'center' }, offsetY: -12 }); }); chart.render(); } }

在mounted函數中調用繪圖方法

mounted() { this.initComponent(); },

啟動項目即可看到最終效果

在vue項目中引用Antv G2,以餅圖為例講解

三、與數據庫交互

添加一個獲取數據的方法(按自己的接口進行相應的替換)

getData() { roomTypeApi.getRoomTypeStatistics().then(res => { this.mydata = res.data.data }) },

在created函數中調用獲取數據的函數

created() { this.getData() },

在watch函數中監聽數據,數據發生變化時重新渲染圖表

watch: { mydata(b,a) { this.chart.changeData(b) this.chart.render() } },

最后得到的圖表數據就是數據庫中的數據了

在vue項目中引用Antv G2,以餅圖為例講解

以上這篇在vue項目中引用Antv G2,以餅圖為例講解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Vue
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
日韩视频国产视频| 国产人久久人人人人爽| 精品久久久网站| 久久精品99久久久| 久久久久综合| 国产精品久久久久久久久搜平片 | 激情欧美日韩一区| 国产欧美一二三区| 成人av影视在线观看| 日韩欧美国产不卡| 成人中文字幕电影| 欧美精品vⅰdeose4hd| 日韩av电影天堂| 久久久777| 亚洲成a人片在线不卡一二三区| 好看的亚洲午夜视频在线| www精品美女久久久tv| 成人午夜免费av| 日韩三级免费观看| 丰满放荡岳乱妇91ww| 7777精品伊人久久久大香线蕉超级流畅 | 国产精品一二| 亚洲韩国精品一区| 另类国产ts人妖高潮视频| 亚洲一区二区三区三| 99精品99久久久久久宅男| 亚洲日本va午夜在线电影| 伊人婷婷久久| 亚洲最大色网站| 欧美一级网站| 日韩专区在线视频| 欧美视频日韩视频| 国产乱一区二区| 日韩欧美一区在线| 成人sese在线| 欧美国产乱子伦| 激情综合中文娱乐网| 亚洲精品五月天| 麻豆av一区二区三区| 一区二区三区美女| 亚洲欧美久久久| 性做久久久久久久免费看| 久热国产精品| 久久国产精品免费| 日韩免费成人网| 欧美精选在线| 亚洲风情在线资源站| 色狠狠桃花综合| 国内一区二区视频| 日韩免费观看2025年上映的电影| 99re在线精品| 成人免费一区二区三区在线观看| 国产一区二区三区奇米久涩| 香蕉乱码成人久久天堂爱免费| 在线亚洲一区二区| 国产美女在线观看一区| 国产精品美女一区二区| 国产欧美二区| 狠狠色丁香久久婷婷综| 久久久噜噜噜久久中文字幕色伊伊 | 欧美国产一区二区在线观看 | 国产一区二区三区免费| 久久综合九色综合欧美亚洲| 午夜欧美视频| 亚洲综合精品自拍| 91黄色小视频| fc2成人免费人成在线观看播放| 中文字幕av一区二区三区免费看| 国产一区二区三区久久久久久久久| 美国三级日本三级久久99| 精品国产一区二区三区久久影院 | 亚洲人成免费| 日本不卡在线视频| 91精品欧美久久久久久动漫| 欧美人与禽性xxxxx杂性| 亚洲妇女屁股眼交7| 日韩午夜av电影| 亚洲人体偷拍| 国产一区二区福利视频| 国产精品二三区| 在线观看国产日韩| 99re热这里只有精品免费视频| 亚洲欧美日韩精品久久久久| 欧美无砖专区一中文字| 欧美在线国产| 中文字幕在线一区免费| 91福利视频在线| 成人激情动漫在线观看| 中文字幕一区二区不卡 | 久久国产福利| 成人在线综合网| 亚洲美女电影在线| 欧美乱妇15p| 亚洲高清不卡一区| 久久天堂精品| 欧美一区激情| 狂野欧美性猛交blacked| 欧美激情一区二区三区在线| 91传媒视频在线播放| 欧美在线视屏| 日韩 欧美一区二区三区| 久久久久青草大香线综合精品| 欧美亚洲一区| 欧美日韩免费观看一区| 久久99国产精品久久99果冻传媒| 国产午夜精品久久久久久免费视 | 亚洲天堂成人网| 欧美一区二区在线视频| 99精品国产在热久久婷婷| 国产精品66部| 天天色 色综合| 中文字幕第一区二区| 欧美日韩精品三区| 亚洲国产专区校园欧美| av日韩在线网站| 欧美aaaaaa午夜精品| 国产精品美女久久久久久| 欧美精品第一页| 久久国产高清| 怡红院精品视频在线观看极品| 成人午夜在线视频| 水野朝阳av一区二区三区| 国产精品视频看| 日韩欧美在线123| 欧美在线一区二区三区| 国产精品久久777777毛茸茸| 欧美在线一二三区| 国产麻豆午夜三级精品| 艳妇臀荡乳欲伦亚洲一区| 国产日产欧美精品一区二区三区| 欧美性xxxxxx少妇| 国产视频一区三区| 欧美午夜在线| youjizz久久| 韩国一区二区视频| 日韩vs国产vs欧美| 亚洲成人激情自拍| 国产精品灌醉下药二区| 欧美精品一区二区三区久久久| 在线免费观看成人短视频| 国产区欧美区日韩区| 欧美日本精品| k8久久久一区二区三区| 久久国产精品99久久久久久老狼| 一区二区三区不卡在线观看| 久久精品人人做| 欧美成va人片在线观看| 欧美精品日日鲁夜夜添| 欧美中文字幕一区二区三区亚洲| 亚欧成人精品| 国产精品欧美久久| 亚洲精品韩国| 欧美性久久久| 99精品桃花视频在线观看| 国产高清久久久| 国产永久精品大片wwwapp| 首页综合国产亚洲丝袜| 樱花草国产18久久久久| 国产欧美视频一区二区| 日韩美一区二区三区| 欧美日韩一区二区三区不卡| 色婷婷精品大视频在线蜜桃视频| 久久国产精品一区二区三区四区| 亚洲在线视频| 国产伦精品一区二区三| 99在线|亚洲一区二区| 亚洲国产片色| 在线免费观看欧美| 在线日韩视频| 最新亚洲视频| 亚洲精品乱码久久久久久蜜桃麻豆| 欧美日本国产精品| 欧美日韩在线一二三| av午夜精品一区二区三区| 播五月开心婷婷综合| 波多野结衣在线aⅴ中文字幕不卡| 91国在线观看| 欧美三级午夜理伦三级中视频| 日本道色综合久久| 欧美亚男人的天堂| 欧美日韩在线三级| 51精品久久久久久久蜜臀| 欧美精选一区二区| 91麻豆精品国产91久久久久久久久 | 国产成人在线视频免费播放| 国产一区二区主播在线| 激情综合网激情| 国产精品99久久久| 成av人片一区二区| 欧美高清视频一区| 激情一区二区| 国产精品入口| 91精品1区2区| 欧美男女性生活在线直播观看 | 亚洲乱码中文字幕| 亚洲一区精品在线| 午夜精品国产更新| 老司机精品视频在线| 国产精品亚洲午夜一区二区三区| 丁香桃色午夜亚洲一区二区三区|