vue+elementUI中使用Echarts之餅圖問題
vue elementUI使用Echarts之餅圖
實現(xiàn)效果如圖
老規(guī)矩先創(chuàng)建占位子的div
<div id="pieReport" style="width: 400px;height: 300px;"></div>
然后引入Echarts,并且模擬數(shù)據(jù)
export default { name: "", data() { return { charts: "", opinion: ["及格人數(shù)", "未及格人數(shù)"], opinionData: [ { value: 12, name: "及格人數(shù)", itemStyle: "#1ab394" }, { value: 18, name: "未及格人數(shù)", itemStyle: "#79d2c0" } ] }; }, }
在methods中定義方法
drawPie(id) { this.charts = this.$echarts.init(document.getElementById(id)); this.charts.setOption({ tooltip: { trigger: "item", formatter: "{a}<br/>:{c} (vvxyksv9kd%)" }, legend: { bottom: 10, left: "center", data: this.opinion }, series: [ { name: "狀態(tài)", type: "pie", radius: "65%", center: ["50%", "50%"], avoidLabelOverlap: false, itemStyle: { emphasis: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: "rgba(0, 0, 0, 0.5)" }, color: function(params) { //自定義顏色 var colorList = ["#1ab394", "#79d2c0"]; return colorList[params.dataIndex]; } }, data: this.opinionData } ] }); },
在mounted中調(diào)用
mounted() { this.$nextTick(function() { this.drawPie("pieReport"); }); }
懶得寫了注釋了,將就看吧
echarts餅圖、柱狀圖、折線圖 切換
最近自學了一下如何運用echarts制作各種圖表,首先我是用springboot+mybatis寫的后端。
TypeMapper接口中定義方法如下:
/** * 查詢新聞種類以及數(shù)量 * @return */ List<Map<Object,Object>> list();
配置NewsMapper.xml文件如下:
<select id="list" resultType="java.util.Map"> select count(*) as num,b.type_name as typeName from t_news a,t_type b where a.type_id=b.type_id group by a.type_id </select>
我這邊寫了一個連接求和查詢語句,返回值類型為Map類型,接下來常規(guī)寫TypeService和TypeServiceImpl,這里沒什么好說的,跟TypeMapper基本一樣哈,接下來寫控制類NewsController,簡要代碼如下:
@RestController public class TypeController { @Autowired private ITypeService typeService; @RequestMapping("/count") public List<Map<Object,Object>> list(){ List<Map<Object, Object>> list = typeService.list(); return list; } }
這里我是通過跨域獲取數(shù)據(jù),創(chuàng)建一個TypeChart組件,在index.js配置好路由后,開始以下代碼??!
<template> <div class="chart-container"> <div id="chartPie" style="width:100%; height:550px;"></div> </div> </template> <script> export default { name: "Typechart", data() { return { chartPie: '', typeName: [],//新聞類型名稱 typeNum: [] //新聞類型數(shù)量 } }, methods: { drawPieChart() { // 基于準備好的dom,初始化echarts實例 this.chartPie = this.$echarts.init(document.getElementById("chartPie")); this.chartPie.setOption({ //設(shè)置標題,副標題,以及標題位置居中 title: { text: '影片統(tǒng)計(餅狀圖)', //subtext: '純屬虛構(gòu)', x: 'center' }, //具體點擊某一項觸發(fā)的樣式內(nèi)容 tooltip: { trigger: 'item', formatter: "{a} <br/> : {c} (vvxyksv9kd%)" }, //左上側(cè)分類條形符 legend: { orient: 'vertical', left: 'left', //通過跨域獲取數(shù)據(jù)給data賦值 data: [] }, //餅狀圖類型以及數(shù)據(jù)源 series: [ { name: '統(tǒng)計數(shù)量', type: 'pie', //radius: '70%', //center: ['50%', '60%'], //通過跨域獲取數(shù)據(jù)給data賦值 data: [], //設(shè)置餅狀圖扇形區(qū)域的樣式 itemStyle: { emphasis: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } }, } ] }); }, //動態(tài)獲取餅狀圖的數(shù)據(jù) async initData() { //url可以在action.js配置,我是學習期間習慣這樣哈哈!! var url="http://localhost:9090/news/count"; this.axios.post(url,{}).then(res=>{ console.log(res.data); var getData = []; //先進行賦值 console.log(res.data.length) //for循環(huán)賦值 for(let i=0; i<res.data.length; i++) { var obj = new Object(); obj.name = res.data[i].typeName; obj.value = res.data[i].num; getData[i] = obj; } //然后再給餅狀圖賦值 this.chartPie.setOption({ legend: { data: res.data.typeName, }, series:[{ data: getData, }] }); }) }, drawCharts() { this.drawPieChart(); }, }, //頁面一加載就調(diào)用方法 mounted () { //先調(diào)用這個方法賦值 this.initData(); //再調(diào)用餅狀圖方法 this.drawCharts(); } } </script> <style scoped> .chart-container { width: 100%; float: left; } </style>
先說一下async的用法,它作為一個關(guān)鍵字放到函數(shù)前面,用于表示函數(shù)是一個異步函數(shù),因為async就是異步的意思, 異步函數(shù)也就意味著該函數(shù)的執(zhí)行不會阻塞后面代碼的執(zhí)行。
運行后圖如下:
完成啦?。?!
柱狀圖也可以根據(jù)上面的方法來寫??!
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
DeepSeek?助力?Vue?開發(fā)絲滑的表單驗證Form?Validation功能
文章介紹了如何使用Vue3的組合式API創(chuàng)建一個表單驗證組件,并提供了詳細的代碼示例,組件支持雙向綁定、自定義驗證規(guī)則、樣式和布局等功能,還涵蓋了組件的調(diào)用示例、路由配置和頁面展示入口2025-02-02vue+elementUI實現(xiàn)內(nèi)嵌table的方法示例
本文主要介紹了vue+elementUI實現(xiàn)內(nèi)嵌table的方法示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12Vue利用computed解決單項數(shù)據(jù)流的問題
Vue是一個非常流行和強大的前端框架,它讓我們可以用簡潔和優(yōu)雅的方式來構(gòu)建用戶界面,但是,Vue也有一些需要注意和掌握的細節(jié)和技巧,今天我們來分享一個Vue中非常經(jīng)典的問題,也是一個非常實用的技巧,Vue利用computed解決單項數(shù)據(jù)流,需要的朋友可以參考下2023-08-08vue本地構(gòu)建熱更新卡頓的問題“75?advanced?module?optimization”完美解決方案
這篇文章主要介紹了vue本地構(gòu)建熱更新卡頓的問題“75?advanced?module?optimization”解決方案,每次熱更新都會卡在?"75?advanced?module?optimization"?的地方不動了,如何解決這個問題呢,下面小編給大家?guī)砹私鉀Q方案,需要的朋友可以參考下2022-08-08Vue設(shè)置select下拉框的默認選項詳解(select空白bug解決)
最近開始學習vue,在學習的過程中遇到的問題將記錄在這里,下面這篇文章主要給大家介紹了關(guān)于Vue設(shè)置select下拉框的默認選項(select空白bug解決)的相關(guān)資料,需要的朋友可以參考下2022-12-12