精通Python數據可視化:Matplotlib柱狀圖、直方圖與餅狀圖實戰解析

精通Python數據可視化:Matplotlib柱狀圖、直方圖與餅狀圖實戰解析

引言

在數據分析和科學研究中,數據可視化扮演著至關重要的角色。Matplotlib是Python中一個廣泛使用的繪圖庫,它提供了豐富的繪圖功能和靈活的定制選項。本文將詳細介紹如何使用Matplotlib繪制柱狀圖、直方圖和餅狀圖,通過具體的代碼示例幫助讀者掌握這些圖表的繪制方法。

一、柱狀圖(Bar Chart)

柱狀圖是一種用矩形條表示數據的圖表,它主要用于展示不同類別的比較關系。Matplotlib提供了bar()函數來繪制柱狀圖。

1. 基本的豎直柱狀圖
import matplotlib.pyplot as plt
import numpy as np# 數據準備
categories = ['A', 'B', 'C', 'D', 'E']
values = [23, 45, 56, 78, 90]# 繪制柱狀圖
plt.figure(figsize=(10, 6))  # 設置圖像大小
plt.bar(categories, values, color='skyblue')  # 繪制豎直柱狀圖
plt.xlabel('Category')  # X軸標簽
plt.ylabel('Values')  # Y軸標簽
plt.title('Basic Vertical Bar Chart')  # 圖表標題
plt.grid(axis='y', alpha=0.5)  # 添加網格線
plt.show()
2. 同位置多柱狀圖

同位置多柱狀圖用于展示同一類別下不同指標的比較。

# 數據準備
categories = ['Norway', 'Germany', 'China', 'USA', 'Sweden']
gold = [16, 12, 9, 8, 8]
silver = [8, 10, 4, 10, 5]
bronze = [13, 5, 2, 7, 5]# 柱狀圖寬度
bar_width = 0.3# 計算每個柱狀圖的起始位置
index = np.arange(len(categories))
gold_bars = index
silver_bars = [x + bar_width for x in index]
bronze_bars = [x + bar_width * 2 for x in index]# 繪制柱狀圖
plt.figure(figsize=(10, 6))
plt.bar(gold_bars, gold, width=bar_width, label='Gold', color='gold')
plt.bar(silver_bars, silver, width=bar_width, label='Silver', color='silver')
plt.bar(bronze_bars, bronze, width=bar_width, label='Bronze', color='brown')# 添加X軸標簽和圖例
plt.xlabel('Country')
plt.ylabel('Medals')
plt.title('Medals Won by Countries')
plt.xticks([r + bar_width for r in range(len(categories))], categories)
plt.legend()
plt.show()
3. 堆疊柱狀圖

堆疊柱狀圖用于展示同一類別下不同組成部分的總和。

# 數據準備
categories = ['Category 1', 'Category 2', 'Category 3', 'Category 4']
values1 = [23, 34, 45, 56]
values2 = [12, 23, 34, 45]# 繪制堆疊柱狀圖
plt.figure(figsize=(10, 6))
plt.bar(categories, values1, label='Part 1', color='skyblue')
plt.bar(categories, values2, bottom=values1, label='Part 2', color='lightcoral')# 添加標簽和圖例
plt.xlabel('Category')
plt.ylabel('Values')
plt.title('Stacked Bar Chart')
plt.legend()
plt.show()
二、直方圖(Histogram)

直方圖是一種特殊的條形圖,用于表示連續變量的分布。Matplotlib提供了hist()函數來繪制直方圖。

# 數據準備
data = np.random.randn(1000)  # 生成1000個正態分布隨機數# 繪制直方圖
plt.figure(figsize=(10, 6))
plt.hist(data, bins=30, color='skyblue', alpha=0.7, edgecolor='black')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram of Normally Distributed Data')
plt.grid(axis='y', alpha=0.5)
plt.show()
三、餅狀圖(Pie Chart)

餅狀圖是一種使用扇形區域來表示數據比例的圖表。Matplotlib提供了pie()函數來繪制餅狀圖。

# 數據準備
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10]
colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']
explode = (0.1, 0, 0, 0)  # 只將第一個扇形區域突出顯示# 繪制餅狀圖
plt.figure(figsize=(8, 8))
plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', startangle=140)
plt.axis('equal')  # 確保餅圖是圓的
plt.title('Pie Chart Example')
plt.show()
結論

通過本文的詳細介紹和代碼示例,希望讀者能夠掌握使用Matplotlib繪制柱狀圖、直方圖和餅狀圖的方法。這些圖表在數據分析和可視化中非常常用,掌握它們的繪制技巧將有助于更好地理解和展示數據。在實際應用中,讀者可以根據具體需求調整圖表的參數和樣式,以達到最佳的視覺效果和數據分析目的。

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

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

相關文章

ubuntu 可以直接在圖像界面打開命令行嗎

是的,Ubuntu(以及其他許多Linux發行版)允許用戶直接在圖形界面(GUI)中打開命令行界面。這通常通過打開一個終端模擬器應用程序來實現,該應用程序提供了一個命令行窗口,用戶可以在其中輸入和執行…

修改文件的默認打開方式

修改文件的默認打開方式 選中文件,右擊,選擇屬性,如圖然后點擊更改,選擇想要的打開方式,再依次點擊 應用、保存 即可,如圖

Linux 環境下整體備份遷移 Docker 鏡像及數據教程

1. 介紹 本教程將引導您如何在 Linux 環境下備份和遷移 Docker 鏡像及其數據。我們將逐步介紹相關步驟,包括 Docker 鏡像的導出和導入、數據卷的備份和恢復等。通過本教程,您將能夠輕松掌握 Docker 容器的遷移操作。 2. 前置準備 在開始之前&#xff…

Redis中數據分片與分片策略

概述 數據分片是一種將數據分割并存儲在多個節點上的技術,可以有效提高系統的擴展性和性能。在Redis中,數據分片主要用于解決單個實例存儲容量和性能瓶頸的問題。通過將數據分散存儲到多個Redis節點中,可以將負載均衡到不同的服務器上&#…

Visual Studio使用——在vs中給vb.net項目添加新的窗口:新建的方式、添加已有窗口的方式

目錄 引出Visual Studio使用vb添加新的窗體自定義代碼片段vs顯示所有文件 總結Idea安裝和使用0.Java下載 和 IDEA工具1.首次新建項目2.隱藏文件不必要顯示文件3.目錄層級設置4.Settings設置選擇idea的場景提示代碼不區分大小寫 取消git的代碼作者顯示 引出 Visual Studio使用—…

基于Vue CLI 3構建Vue3項目(Vue2也可參考)

天行健,君子以自強不息;地勢坤,君子以厚德載物。 每個人都有惰性,但不斷學習是好好生活的根本,共勉! 文章均為學習整理筆記,分享記錄為主,如有錯誤請指正,共同學習進步。…

Android Framework學習筆記(4)----Zygote進程

Zygote的啟動流程 Init進程啟動后,會加載并執行init.rc文件。該.rc文件中,就包含啟動Zygote進程的Action。詳見“RC文件解析”章節。 根據Zygote對應的RC文件,可知Zygote進程是由/system/bin/app_process程序來創建的。 app_process大致處…

PHP手邊酒店多商戶版平臺小程序系統源碼

🏨【旅行新寵】手邊酒店多商戶版小程序,一鍵解鎖住宿新體驗!🛌 🌈【開篇:旅行新伴侶,盡在掌握】🌈 還在為旅行中的住宿選擇而糾結嗎?是時候告別繁瑣的搜索和比價過程&a…

MT6985(天璣9200)芯片性能參數_MTK聯發科旗艦5G移動平臺處理器

MT6985天璣 9200 旗艦移動平臺擁有專業級影像、沉浸式游戲和先進移動顯示技術,以及更快捷、覆蓋更廣的 5G 和 支持 Wi-Fi 7 連接,具有高性能、高能效、低功耗表現。率先采用 Armv9 性能核,全部支持純 64 位應用,開啟高能效架構設計…

【數據庫學習】java數據庫開發:sql解析之jsqlparser

1,概念 1) SQL 解析器 用于處理 SQL 查詢語句的解析和分析。 場景: 數據庫客戶端開發,解析用戶輸入的sql語法并執行。自定義sql解析和執行邏輯。 標準的數據庫接口(如 JDBC)無法完全滿足需求時&#xff…

音頻數據集

1 多語言 Mozilla Common Voice 下載地址:https://voice.mozilla.org/data 時長:1965小時(目前為止) 最早2017年發布,持續更新,該基金會表示,通過 Common Voice 網站和移動應用,他們…

搞定前端面試題——ES6同步與異步機制、async/await的使用以及Promise的使用!!!

文章目錄 同步和異步async/awaitPromisePromise的概念 同步和異步 ? 同步:代碼按照編寫順序逐行執行,后續的代碼必須等待當前正在執行的代碼完成之后才能執行,當遇到耗時的操作(如網絡請求等)時,主線程會…

Java二十三種設計模式-抽象工廠模式(3/23)

抽象工廠模式:復雜系統的靈活構建者 引言 在軟件開發中,抽象工廠模式是一種提供接口以創建相關或依賴對象族的創建型設計模式。這種模式允許客戶端使用一個共同的接口來創建不同的產品族,而無需指定具體類。 基礎知識,java設計模…

SpringBoot日常:常用數據類型比較

文章目錄 前言基本類型引用類型date類型比較LocalDate類型比較LocalDateTime類型比較Bigdecimal類型比較對象類型比較 前言 在Java中,我們一般分為基本類型的比較和引用類型的比較,下面按照這兩個大分類梳理一下日常用到的類型比較 基本類型 基本數據類型比較主要…

算法 —— LRU算法

算法 —— LRU算法 LRULRU算法的工作原理:實現方法:性能考慮: 模擬過程splice函數對于std::list和std::forward_list基本語法:功能描述: 示例:注意事項: 如果大家已經學習過了Cache的替換算法和…

ElementUIV12相關使用方法

今日內容 零、 復習昨日 零、 復習昨日 一、Element UI Element,一套為開發者、設計師和產品經理準備的基于 Vue 2.0 的桌面端組件庫 官網: https://element.eleme.cn/#/zh-CN Element Plus,基于 Vue 3,面向設計師和開發者的組件庫 官網: htt…

C語言--遞歸

曾經有一個段子:上大學時,我們的c語言老師說:學c時,如果有50%的同學死在了循環上面,那么就有90%的同學死在了遞歸上面。接下來,就來看看遞歸是怎么個事? 一.遞歸的介紹 遞歸是指一個函數直接或…

Spring中的@Transactional什么時候會失效?

在Spring中,Transactional注解用于聲明式事務管理,它可以使方法在事務上下文中執行。然而,Transactional注解有時會失效,這通常是由于以下幾種情況: 1. 非public方法: - Transactional注解默認只能應用…

跨平臺WPF音樂商店應用程序

目錄 一 簡介 二 設計思路 三 源碼 一 簡介 支持在線檢索音樂,支持實時瀏覽當前收藏的音樂及音樂數據的持久化。 二 設計思路 采用MVVM架構,前后端分離,子界面彈出始終位于主界面的中心。 三 源碼 視窗引導啟動源碼: namesp…

MySQL(8)事務

目錄 1.事務; 1.事務: 1.1 如果CURD不加限制會這么樣子? 可能造成數據同時被修改, 數據修改的結果是未知的.(可以想一下之前的搶票線程問題) 1.2 事務概念: 事務就是一組DML語句組成,這些語句在邏輯上存在相關性,這一組DML語句要么全部成功&#xff0…