echarts繪制一個環形圖2

其他echarts:

echarts繪制一個環形圖

echarts繪制一個柱狀圖,柱狀折線圖

echarts繪制一個餅圖?

效果:

組件代碼:

<template><div class="wrapper"><div ref="doughnutChart2" id="doughnutChart2"></div></div>
</template><script>
export default {mixins: [],components: {},props: {table: {type: Object,default: {datas: {},color: [],},},hollowOut: {//是否中空type: Boolean,default: false,},},data() {return {limitLength: 7, //顯示name長度showTotalNum: false, //是否顯示總數totalNum: 0, //總數};},created() {},mounted() {},watch: {table: {handler(newVal) {if (newVal) {// 進行數據處理操作if (newVal.limitLength) this.limitLength = newVal.limitLength;//計算總數if (newVal.showTotalNum) {this.showTotalNum = newVal.showTotalNum;this.totalNum = this.calculatePropertySum(newVal.datas, "VALUE");}const generateRandomColor = () => {var r = Math.floor(Math.random() * 201); // 隨機生成紅色通道值(0-200)var g = Math.floor(Math.random() * 255); // 隨機生成綠色通道值(0-200)var b = Math.floor(Math.random() * 201); // 隨機生成藍色通道值(0-200)let hex ="#" + componentToHex(r) + componentToHex(g) + componentToHex(b);return hex;};const componentToHex = (c) => {let hex = c.toString(16);return hex.length == 1 ? "0" + hex : hex;};newVal.datas.map((item, index) => {if (!newVal.color[index]) {let a = generateRandomColor();newVal.color.push(a);}});setTimeout(() => {this.init();});}},},},methods: {init() {let option = {tooltip: {trigger: "item",formatter: "{b} : {c} ({d}%)",},title: [{show: this.showTotalNum,text: this.totalNum,left: this.$common.adjustOffset(this.totalNum,this.table.legendLocation == "left" ? "65%" : "47.5%",this.table.legendLocation == "left" ? "48%" : "42%").adjustedLeft,top: this.$common.adjustOffset(this.totalNum,this.table.legendLocation == "left" ? "65%" : "47.5%",this.table.legendLocation == "left" ? "48%" : "42%").adjustedTop,textStyle: {color: "#333333",fontSize: "22",fontWeight: "600",textAlign: "center", // 設置標題居中對齊},},{show: this.showTotalNum,text: "總計",left: this.$common.adjustOffset("總計",this.table.legendLocation == "left" ? "65%" : "47.5%",this.table.legendLocation == "left" ? "33%" : "29.5%").adjustedLeft,top: this.$common.adjustOffset("總計",this.table.legendLocation == "left" ? "65%" : "47.5%",this.table.legendLocation == "left" ? "33%" : "29.5%").adjustedTop,textStyle: {color: "#333333",fontSize: "12",fontWeight: "500",textAlign: "center", // 設置標題居中對齊},},],//顏色注釋顯示的位置legend: {orient:this.table.legendLocation == "left" ? "vertical" : "horizontal",type: "scroll", //顏色過多可以滾動left: this.table.legendLocation == "left" ? 0 : "center",top: this.table.legendLocation == "left" ? "top" : "bottom",icon: this.table.legendIcon ? "circle" : "",formatter: (name) => {let seriesData = option.series[1].data; // 數據在series的第幾個中let total = 0;for (let i = 0; i < seriesData.length; i++) {total += seriesData[i].value;}for (let j = 0; j < seriesData.length; j++) {if (name === seriesData[j].name) {let percent = ((seriesData[j].value / total) * 100).toFixed(2);if (name.length > this.limitLength) {return (name.substring(0, this.limitLength) +"..." +" " +seriesData[j].value +" " +percent +"%");} else {return name + " " + seriesData[j].value + " " + percent + "%";}}}},},series: [// {//   type: "pie",//   radius: ["39%", "41%"],//   center: ["67%", "50%"],//   avoidLabelOverlap: false,//   label: {//     show: false,//     position: "center",//   },//   emphasis: {//     label: {//       show: true,//       fontSize: "30",//       fontWeight: "bold",//     },//   },//   labelLine: {//     show: false,//   },//   data: [//     {//       value: 1,//       name: undefined,//       itemStyle: {//         color: new this.$E.graphic.LinearGradient(0, 0, 0, 1, [//           { offset: 0, color: "rgba(255, 255, 255, 0)" },//           { offset: 0.24, color: "rgba(153, 140, 255, 1)" },//           { offset: 0.5, color: "rgba(117, 104, 255, 1)" },//           { offset: 0.24, color: "rgba(153, 140, 255, 1)" },//           { offset: 1, color: "rgba(255, 255, 255, 0)" },//         ]),//       },//       hoverAnimation: false,//     },//   ],//   graphic: [//     {//       type: "path",//       shape: {//         cx: 0.5,//         cy: 0.5,//         r: "15%",//       },//       style: {//         fill: "none",//         stroke: "purple",//       },//     },//   ],// },{color: ["#163d59"],type: "gauge",center:this.table.legendLocation == "left"? ["67%", "50%"]: ["50%", "40%"],startAngle: 150,endAngle: -209.999,splitNumber: 7,radius: this.table.legendLocation == "left" ? "80%" : "60%",pointer: {show: false,},progress: {show: false,roundCap: true,width: 1,},axisLine: {show: false,lineStyle: {width: 10,color: "#D7D7E3", //線的顏色},},axisTick: {distance: -25,length: 10,splitNumber: 10, //線的密度lineStyle: {width: 2, //線的寬度color: "#D7D7E3", //線的顏色},},// 隔幾個變長splitLine: {show: false,},axisLabel: {show: false,},anchor: {show: false,},title: {show: false,},detail: {show: false,},data: [],},{type: "pie",center:this.table.legendLocation == "left"? ["67%", "50%"]: ["50%", "40%"],radius:this.table.legendLocation == "left"? ["60%", "85%"]: ["45%", "65%"], //餅圖的半徑,第一項是內半徑,第二項是外半徑avoidLabelOverlap: false,itemStyle: {// borderRadius: 5,borderColor: "#fff",borderWidth: 3,},label: {position: "inner",formatter: "{c}",},// emphasis: {//   label: {//     show: true,//     fontSize: 40,//     fontWeight: "bold",//   },// },data: this.table.datas.map((item, index) => {let obj = {// label: { color: this.table.color[index] },name: item.NAME,value: item.VALUE || item.NUM,};return obj;}),},],};let chartDom = this.$refs.doughnutChart2;let myChart = this.$E.init(chartDom);myChart.setOption(option);},//計算總和calculatePropertySum(arr, property) {return arr.reduce((sum, obj) => {const value = parseFloat(obj[property]);if (!isNaN(value)) {return sum + value;} else {return sum;}}, 0);},},
};
</script><style scoped lang="scss">
.wrapper {width: 100%;height: 100%;position: relative;#doughnutChart2 {width: 100%;height: 100%;box-sizing: border-box;position: absolute;top: 0;left: 0;}
}
</style>

組件調用:

<DoughnutChart2 :style="{ height: heightNew }" :table="table" />
// heightNew  動態計算的高度
// table:
/*** {"datas": [{"NAME": "主任護師","VALUE": 10},{"NAME": "副主任護師","VALUE": 64},{"NAME": "主管護師","VALUE": 418},{"NAME": "護師","VALUE": 397},{"NAME": "護士","VALUE": 86}],"color": ["#5470c6","#91cc75","#fac858","#ee6666","#73c0de","#3ba272","#fc8452","#9a60b4","#ea7ccc","#8364FF","#36F4D7","#FBB03C"],"legendLocation": ["left"],"showTotalNum": true,"legendIcon": ["round"]
}*/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/206960.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/206960.shtml
英文地址,請注明出處:http://en.pswp.cn/news/206960.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ORACLE數據庫實驗總集 實驗六 SQL 語句應用

一、 實驗目的 &#xff08;1&#xff09; 掌握數據的插入&#xff08;INSERT&#xff09;、 修改&#xff08;UPDATE&#xff09; 和刪除&#xff08;DELETE&#xff09; 操作。 &#xff08;2&#xff09; 掌握不同類型的數據查詢&#xff08;SELECT&#xff09; 操作。 二、…

阿里滴滴之后,騰訊視頻也崩了!網友追問:下一個是誰?

繼滴滴“崩了”一夜后&#xff0c;剛過去不到一周時間&#xff0c;互聯網“崩了”連續劇又迎來了續集。 就在剛剛&#xff0c;也是晚間時分&#xff0c;網友曝出騰訊視頻崩了&#xff0c;不能追劇了。接著&#xff0c;騰訊視頻官方便現身回應&#xff0c;坐實了傳聞。 還是同…

JVM虛擬機:如何查看JVM初始和最終的參數?

本文重點 在前面的課程中&#xff0c;我們學習了如何查看當前程序所處于的xx參數&#xff0c;本文再介紹一種如何參看JVM的xx參數&#xff1f; 查看JVM的所有初始化參數 方式一&#xff1a;java -XX:PrintFlagsInitial 方式二&#xff1a;java -XX:PrintFlagsInitial -versio…

【自學篇】Python篇-第一天溫度轉換

1、規則 輸入 華氏度 轉換為 攝氏度 輸入 攝氏度 轉換為 華氏度 轉換公式&#xff1a; 華氏度 攝氏度 * 1.8 32 攝氏度 &#xff08;華氏度32 &#xff09;/1.8 2、python代碼 TempStr input() if TempStr[-1] in [F,f]:print("轉換后的溫度值&#xff1a;{:.2f}C&…

淺談Elasticsearch備份和恢復

Elasticsearch 備份和恢復功能 Elasticsearch 是一個分布式搜索和分析引擎&#xff0c;廣泛應用于各種場景&#xff0c;如日志分析、全文搜索和實時數據處理。在使用 Elasticsearch 時&#xff0c;數據的安全和可用性至關重要。本文將詳細講解 Elasticsearch 的備份和恢復功能…

Uncle Maker: (Time)Stamping Out The Competition in Ethereum

目錄 筆記后續的研究方向摘要引言貢獻攻擊的簡要概述 Uncle Maker: (Time)Stamping Out The Competition in Ethereum CCS 2023 筆記 本文對以太坊 1 的共識機制進行了攻擊&#xff0c;該機制允許礦工獲得比誠實同行更高的挖礦獎勵。這種名為“Uncle Maker”的攻擊操縱區塊時間…

mysql數據庫中int字段長度,即int(1)和int(10)的區別

1.起因 為什么想起來看這個問題&#xff0c;是最近有同事問mysql的init類型的字段長度的問題&#xff0c;他問int(1)和int(10)是什么意思&#xff0c;是字段長度越大&#xff0c;能存儲的數字越大么&#xff1f;咋一問&#xff0c;還有點懵&#xff0c;從慣性思維來看&#xf…

React 中虛擬DOM是什么,為什么需要它?

注意&#xff1a;本節主要講React中的虛擬DOM&#xff0c;但是虛擬DOM并不是React中特有的內容。 1. React 中虛擬 DOM是什么&#xff1f; 虛擬DOM是對真實DOM的描述&#xff0c;虛擬DOM是JS對象&#xff0c;實際上就是 JSX 通過 babel 轉換成 React.createElement()&#xff…

8.3 C++11對Unicode的支持

一、C11對Unicode的支持 在C98中&#xff0c;引入wchar_t對Unicode支持&#xff0c;但是后來由于不同平臺下wchar_t的寬度并不相同(8,16,32位)&#xff0c;導致可移植性受到影響。因此從C11開始引入了char16_t、char32_t以及原有的char&#xff0c;分別存儲utf16&#xff0c;u…

邊緣端部署的典型目標識別網絡

邊緣端&#xff08;Edge&#xff09;部署深度學習目標檢測網絡通常涉及到在資源受限的設備上執行模型推斷。這里有一些邊緣端部署深度學習目標檢測網絡的常見策略和技術&#xff1a; 輕量化模型&#xff1a; 選擇或設計輕量級的深度學習模型&#xff0c;例如MobileNet、Squeez…

來自OpenAI的官方解釋:ChatGPT中的GPTs與Assistants API的區別是什么?有什么差異?

本文原文來自DataLearnerAI的官方網站&#xff1a; 來自OpenAI的官方解釋&#xff1a;ChatGPT中的GPTs與Assistants API的區別是什么&#xff1f;有什么差異&#xff1f; | 數據學習者官方網站(Datalearner)https://www.datalearner.com/blog/1051701996595465 OpenAI發布的產…

圖解算法數據結構-LeetBook-查找01_第一個只出現一次的字符

某套連招動作記作僅由小寫字母組成的序列 arr&#xff0c;其中 arr[i] 第 i 個招式的名字。請返回第一個只出現一次的招式名稱&#xff0c;如不存在請返回空格。 示例 1&#xff1a; 輸入&#xff1a;arr “abbccdeff” 輸出&#xff1a;‘a’ 示例 2&#xff1a; 輸入&…

3D Web輕量引擎HOOPS Communicator如何實現對大模型的渲染支持?

除了讀取輕松外&#xff0c;HOOPS Communicator對超大模型的支持效果也非常好&#xff0c;它可以支持30GB的包含70萬個零件和3.5億個三角面的Catia裝配模型&#xff01; 那么它是如何來實現對大模型的支持呢&#xff1f; 我們將從以下幾個方面與大家分享&#xff1a;最低幀率…

python核心階段(五)—— 面向對象三大特性

1.封裝 概念&#xff1a;封裝主要是指將一些屬性和相關方法封裝在一個對象中&#xff0c;對外隱藏內部具體實現細節 作用&#xff1a;1&#xff09;使用起來更加方便&#xff0c;類似于提供了一個工具箱 2&#xff09;保證數據的安全&#xff08;設置私有屬性&#xff09; 3&am…

高精度加法,減法,乘法,除法(下)(C語言)

前言 上一篇博客我們分享了高精度加法&#xff0c;減法,這一期我將為大家講解高精度乘法和高精度除法。那讓我們開始吧&#xff01; 對加法和減法感興趣的話就點我 文章目錄 1&#xff0c;乘法2&#xff0c;除法3&#xff0c;尾聲 1&#xff0c;乘法 讓我們想想我們平時做數學…

openpyxl讀取Excel文件忽略單元格公式僅讀取所顯示的值

目錄 前言解決方案先不加&#xff1a;看讀取信息加上參數&#xff1a;看讀取信息完整代碼 前言 我們在讀取Excel文件時&#xff0c;假如某行或者某列是利用公式生成的&#xff0c;但是我們在利用openpyxl進行讀取時&#xff0c;發現讀取到的是公式&#xff0c;而非顯示的值 解…

Java并行和并發有什么區別?

Java并行和并發有什么區別&#xff1f; 并行和并發是兩個在多線程編程中經常使用的概念&#xff0c;它們描述了不同的多任務處理方式。 并發&#xff08;Concurrency&#xff09;&#xff1a; 定義&#xff1a;并發是指多個任務共享資源&#xff0c;但是并不一定同時執行。它強…

pipe函數、SIGCHLD、execvp

pipe函數 以下是一個使用C語言編寫的通過管道&#xff08;pipe&#xff09;進行進程間通信的示例代碼&#xff1a; #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h>int main() {int pipefd[2];pid_t pid;char b…

[⑧ADRV902x]: Digital Pre-Distortion (DPD)學習筆記

前言 DPD 數字預失真技術&#xff0c;是一種用于抑制功率放大器非線性失真的方法。 它通過在信號輸入功率放大器&#xff08;PA&#xff09;之前插入一個預失真模塊&#xff0c;對輸入信號進行適當的調制&#xff0c;以抵消功率放大器引起的非線性失真&#xff0c;使功率放大器…

Ubuntu 安裝 CUDA 和 cuDNN 詳細步驟

我的Linux系統背景&#xff1a; 系統和驅動都已安裝。 系統是centos 8。查看自己操作系統的版本信息&#xff1a;cat /etc/issue或者是 cat /etc/lsb-release 用nvidia-smi可以看到顯卡驅動和可支持的最高cuda版本&#xff0c;我的是12.2。驅動版本是535.129.03 首先&#…