MATLAB--pie函數繪制復雜分類餅圖(2)--附案例代碼

MATLAB–pie函數繪制復雜分類數據的餅狀圖

目錄

  • MATLAB--pie函數繪制復雜分類數據的餅狀圖
  • 摘要
  • 1. 問題描述
  • 2. 具體步驟:
  • 3. 繪制結果
  • 4. 小結

摘要

在數據可視化中,餅狀圖是一種常用的展示分類數據的方式。之前,文章介紹了使用MATLAB繪制餅狀圖的入門方法,現在博主要填上之前這篇文章里提到的坑啦!!本文將介紹如何使用MATLAB的pie函數繪制復雜分類數據的餅狀圖。我們首先生成需要使用的復雜數據,然后詳細說明了使用pie函數繪制餅狀圖的具體步驟,包括易錯點和重點內容。

1. 問題描述

為了方便給大家演示,我們從0到1,從數據類型和大家開始說明。這里將使用MATLAB生成描述6家上市投資公司在8種投資類別上的復雜數據,然后按照投資類別進行分類,并計算各公司對各類別企業的投資比例,最后繪制餅狀圖展示結果。
數據類型:5家上市投資公司,投資若干家類別企業(共8種類別),對各企業的投資額也不同,數據內容包括:投資公司、被投資的企業、各企業行業類別、各公司對各企業的投資額。
接下來,需要將該投資額數據按照8種投資類別進行分類,5個公司對8個類別企業的投資比例以投資額作為計算依據,每家公司每種類別占比均不相同。
最后,繪制均勻分布的餅狀圖,每張餅圖中按照 “類別(比例)” 的格式 標注各類別及比例數據,由于legend相同,所以整個figure使用一個legend;同時調整字體和figure圖幅大小,使所有字都清楚展示出來。

2. 具體步驟:

  • 投資數據生成: 先生成描述5家上市投資公司在8種投資類別上的復雜數據,包括投資公司、被投資的企業、各企業行業類別以及各公司對各企業的投資額。
% 生成復雜分類數據
investment_data = struct();% 六家上市投資公司名稱
company_names = {'A Corp', 'B Corp', 'C Corp', 'D Corp', 'E Corp'};
investment_data.Company = company_names;% 8種投資類別
category_names = {'Technology', 'Finance', 'Healthcare', 'Real Estate', 'Manufacturing', 'Energy', 'Retail', 'Transportation'};% 為每家公司隨機生成對每種類別企業的投資額
for i = 1:numel(company_names)for j = 1:numel(category_names)investment_data.(['Investment_', num2str(j)])(i) = {randi([10000, 500000])}; % 隨機生成投資額end
end

重點 :數據采用結構數組 investment_data 保存更方便直觀哦;分類數據使用元胞cell數據類型。

  • 數據分類處理: 將按照8種投資類別對數據進行分類,并計算各公司對各類別企業的投資比例。
% 按照投資類別分類并計算投資比例
category_investments = zeros(numel(category_names), numel(company_names));
for i = 1:numel(category_names)for j = 1:numel(company_names)category_investments(i, j) = cell2mat(investment_data.(['Investment_', num2str(i)])(j));end
end% 計算投資比例
total_investments = sum(category_investments, 1);
investment_proportions = category_investments ./ total_investments;
  • 繪制餅狀圖: 最后,使用MATLAB的pie函數繪制餅狀圖,確保餅圖分布均勻,并標注各類別及比例數據。
    ref:(代碼中部分方法和原理參見博主另一篇文章:如何合理布局子圖–確定MATLAB的subplot子圖位置參數)
% 繪制餅狀圖  采用subplot繪制子圖,將5家公司的數據繪制在一張figure上
% 給定子圖布局參數 (具體方法和原理參見博主另一篇文章:https://blog.csdn.net/weixin_43323302/article/details/136383424)
N = 2; % 子圖行數
M = 3; % 子圖列數
subplot_length = 3; % 子圖高度 (比例2:3,3:4,9:16 等)
subplot_width = 4; % 子圖寬度
top_margin = 0.4; % 上邊界間距
bottom_margin = 0.6; % 下邊界間距
left_margin = 0.6; % 左邊界間距
right_margin = 0.4; % 右邊界間距
gap = 0.8; % 子圖間隙
% 采用 subplot_params 函數確定子圖布局參數(要求繪圖工整且格式統一的小伙伴可以采用)(具體方法和原理參見博主另一篇文章:https://blog.csdn.net/weixin_43323302/article/details/136383424)
[subplot_position,figure_width,figure_length]=subplot_params(N,M,subplot_length,subplot_width,top_margin,bottom_margin,left_margin,right_margin,gap);f1=figure('Units', 'inches','Position', [0, 0, figure_width, figure_length]);  % 一定要說明單位
set(f1,'name','日均啟停次數');
fontsize=9;
labelmultiplier=1.3;
titlemultiplier=1.4;
pos=subplot_position;legend_labels = {}; % 存儲legend標簽for i = 1:numel(company_names)labels_text = {}; % 存儲label標簽% 合并標簽和比例數據for k = 1:numel(category_names)label_text = [category_names{k}, ' (', num2str(100*investment_proportions(k, i), '%.1f%%'), ')'];labels_text = [labels_text, label_text]; % 添加到label標簽中endsubplot('Position',pos(i,:));h = pie(investment_proportions(:, i), labels_text);title(company_names{i}); % 添加標題set(gca,'FontSize',fontsize,'LabelFontSizeMultiplier',labelmultiplier,'TitleFontSizeMultiplier',titlemultiplier);end
legend(category_names, 'Location', 'bestoutside','FontSize',fontsize); % 設置legend位置

易錯點: 在使用pie函數時,需要將比例數據格式化為字符串,并確保格式清晰可讀。
重點內容: 使用MATLAB的字符串格式化功能,將比例數據添加到各類別的標簽上。

3. 繪制結果

各家公司、各個投資類別的信息及占比,一目了然。第六個位置剛好放legend啦!
在這里插入圖片描述

4. 小結

通過以上步驟,使用MATLAB的pie函數繪制了復雜分類數據的餅狀圖,并調整了圖形樣式以確保數據結果分類的準確度和可視化。希望博主這篇文章能夠幫助你更好地利用MATLAB進行數據可視化哦。

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

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

相關文章

數據刪除

目錄 數據刪除 刪除員工編號為 7369 的員工信息 刪除若干個數據 刪除公司中工資最高的員工 Oracle從入門到總裁:??????https://blog.csdn.net/weixin_67859959/article/details/135209645 數據刪除 刪除數據就是指刪除不再需要的數據 delete from 表名稱 [where 刪…

群暉Synology Drive服務搭建結合內網穿透實現云同步Obsidian筆記文件夾

🌈個人主頁: Aileen_0v0 🔥熱門專欄: 華為鴻蒙系統學習|計算機網絡|數據結構與算法 ?💫個人格言:“沒有羅馬,那就自己創造羅馬~” #mermaid-svg-ebec69DBjtGk7apF {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

C++字典操作

創建字典 #include<iostream> #include<map> #include<string>using namespace std;int main(){map<string, int> mymap;}賦值 2.1 指定元素賦值 mymap["abc"] 1;2.2 添加鍵值對 mymap.insert(make_pair("bcd", 2));字典的順序…

后端傳給前端的時間字段前端顯示不正確

具體問題是什么呢&#xff0c;就比如我后段有一個字段是TimeStamp類型&#xff0c;從數據庫中查出數據是下面的樣式&#xff1a; 但是前端顯示的是下面的格式&#xff1a; 這個的解決方法還是挺多的&#xff0c;那接下來具體來看看吧~ 第一種&#xff1a; 在application.prop…

Linux使用bcache 將SSD加速硬盤

前言 在Linux下&#xff0c;使用SSD為HDD加速&#xff0c;目前較為成熟的方案有&#xff1a;flashcache&#xff0c;enhanceIO&#xff0c;dm-cache&#xff0c;bcache等&#xff0c;多方面比較以后最終選擇了bcache。 bcache 是一個 Linux 內核塊層超速緩存。它允許使用一個或…

Flink 面試題總結及答案

基礎 state的分類 key state和operate state state 的重分布 Flink狀態管理詳解&#xff1a;Keyed State和Operator List State深度解析 - 掘金 checkpoint 和save point https://zhuanlan.zhihu.com/p/79526638 flink job 的容錯策略 如果在沒有持續消息輸出的情況下&…

19.AUTOSAR MCAL分析(一):Microcontroller Driver

目錄 1. MCAL概述 2. Microcontroller Drivers 2.1 MCU Drivers 2.2 GPT Driver 2.3 WatchDog Driver 2.4 CoreTest 3.小結 <

【短時交通流量預測】基于單層BP神經網絡

課題名稱&#xff1a;基于單層BP神經網絡的短時交通流量預測 版本時間&#xff1a;2023-04-27 代碼獲取方式&#xff1a;QQ&#xff1a;491052175 或者 私聊博主獲取 模型簡介&#xff1a; 城市交通路網中交通路段上某時刻的交通流量與本路段前幾個時段的交通流量有關&…

Android 自定義組件

在 Android 開發中&#xff0c;有時我們需要創建自定義的 UI 組件以滿足特定的需求&#xff0c;這就是 Android 自定義組件的用途。在這篇博客中&#xff0c;我們將介紹如何創建和使用自定義組件&#xff0c;并以一個標題欄組件為例進行說明。 什么是自定義組件&#xff1f; …

【CSP試題回顧】201312-3-最大的矩形

CSP-201312-3-最大的矩形 解題思路 1. 遍歷所有可能的矩形高度&#xff1a; 通過遍歷所有矩形高度來找到最大的矩形&#xff0c;即對每個可能的高度 it&#xff08;從直方圖中的最小高度到最大高度 heightMax&#xff09;&#xff0c;代碼將嘗試找到在這個高度或以上的最長連…

軟件測試相關介紹

什么是軟件測試&#xff1f; 軟件測試&#xff1a;使用技術手段驗證軟件是否滿足使用需求 軟件測試是指通過運行、評估和驗證軟件系統的過程&#xff0c;以確定其是否滿足預期的需求和質量標準。它是軟件開發生命周期中的一個重要環節&#xff0c;旨在發現和修復潛在的缺陷和…

前端錯誤 “TypeError Cannot read properties of undefined (reading ‘xxx‘)

前端錯誤 “TypeError: Cannot read properties of undefined (reading ‘xxx‘) 原因分析及解決 情況一&#xff1a; 出現該錯誤的原因是因為你花括號中的某些屬性未定義。極大可能是因為你寫錯了屬性名稱 情況二&#xff1a; 異步請求獲取數據時&#xff0c;語句可能寫錯&…

Linux操作系統——進程信號

1.信號的概念 生活當中哪些場景算信號呢&#xff1f;比如說你晚上調了個鬧鐘&#xff0c;然后第二天早上你聽到了鬧鐘響了你就知道該起床了&#xff0c;這種機制就叫做信號機制。在生活中我們的信號是非常非常多的&#xff0c;比如說有&#xff1a;紅綠燈&#xff0c;下課鈴聲…

Java中多線程的各種姿勢

在Java中&#xff0c;多線程編程是一種強大的并發編程技術&#xff0c;可以讓你同時執行多個任務。Java提供了多種方式來創建和管理線程。以下是Java中給多線程使用的一些主要方法&#xff1a; 繼承Thread類&#xff1a; 創建一個新的類繼承自Thread類。覆蓋run()方法以定義線程…

爬蟲案例一

首先我舉一個案例比如豆瓣電影排行榜 (douban.com)這個電影&#xff0c;首先我們進去檢查源代碼 說明源代碼有&#xff0c;說明是服務器渲染&#xff0c;可以直接那html 但是返回的結果是空&#xff0c;所以我們需要在頭里面加上User-Agent 然后可以看到有返回的結果&#xff0…

Docker快速集成minio

拉取鏡像&#xff08;默認最新的&#xff09; docker pull minio/minio創建配制和數據映射文件夾&#xff08;用于將容器內的配置和數據映射到本地&#xff09; 這邊的路徑可以修改成自己想要的文件夾 mkdir -p /data/minio/{config,data}啟動容器 (這邊啟動容器要保證本地映…

什么是SpringCloud,有哪些組件?

spring Cloud 是基于spring boot的分布式系統開發工具,它提供了一系列開箱即用的,針對分布式系統開發的特性和組件。用于幫助開發人員快速構建和管理云原生應用程序。 Spring Cloud 的主要目標是解決分布式系統中的常見問題,例如服務發現,負載均衡,配置管理,斷路器,消息總…

c++筆記—— AutoBuffer類(opencv)

自動分配緩沖區類 Automatically Allocated Buffer Class. 這個類用于函數和方法中的臨時緩沖區。如果臨時緩沖區通常很小&#xff08;幾K的內存&#xff09;&#xff0c;但其大小取決于參數&#xff0c;則在堆棧上創建一個小的固定大小數組&#xff0c;并在足夠大時使用它是有…

LabVIEW起重機工作參數遠程監測系統

LabVIEW起重機工作參數遠程監測系統 隨著起重機技術的持續發展&#xff0c;對其工作參數的實時監控需求日益增加。設計了一個基于LabVIEW和TBox的起重機工作參數遠程監測系統&#xff0c;能夠實現起重機工作參數的實時采集、傳輸、解析和顯示&#xff0c;有效提升起重機的性能…

python--開心篇--print--多種多樣的print輸出

文章目錄 名言輸出繞口令輸出《水滸傳》中的梁山好漢輸出軌道交通充值信息輸出對聯字符畫輸出長春地鐵1號線運行圖模擬12306查詢界面模擬企業網站登錄界面 名言 print("& "*15) print("& &") print("& …