Python 數據分析(二):Matplotlib 繪圖

目錄
    • 1. 簡介
    • 2. 繪圖
      • 2.1 折線圖
        • 2.1.1 單線
        • 2.1.2 多線
        • 2.1.3 子圖
      • 2.2 散點圖
      • 2.3 直方圖
      • 2.4 條形圖
        • 2.4.1 縱置
        • 2.4.2 橫置
        • 2.4.3 多條
      • 2.5 餅圖

1. 簡介

Matplotlib 是 Python 提供的一個繪圖庫,通過該庫我們可以很容易的繪制出折線圖、直方圖、散點圖、餅圖等豐富的統計圖,安裝使用 pip install matplotlib 命令即可,Matplotlib 經常會與 NumPy 一起使用。

在進行數據分析時,可視化工作是一個十分重要的環節,數據可視化可以讓我們更加直觀、清晰的了解數據,Matplotlib 就是一種可視化實現方式。

2. 繪圖

下面我們來學習一下如何使用 Matplotlib 繪制常用統計圖。

2.1 折線圖

折線圖可以顯示隨某一指標變化的連續數據。

2.1.1 單線

首先,我們來看一下如何使用 Matplotlib 繪制一個簡單的折線圖,具體實現如下:

from matplotlib import pyplot as pltx = range(1, 7)
y = [13, 15, 14, 16, 15, 17]
plt.title('折線圖')
plt.xlabel('x 軸')
plt.ylabel('y 軸')
plt.plot(x, y)
plt.show()

看一下效果:

我們在使用中文時可能會現亂碼的問題,可以通過如下方式解決:
① 下載 SimHei.ttf,放到 site-packages\matplotlib\mpl-data\fonts\ttf 目錄下
② 到 site-packages\matplotlib\mpl-data 目錄下找到 matplotlibrc 文件,并修改如下兩項即可

font.sans-serif     : SimHei, DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
axes.unicode_minus  : False

我們還可以改變折線的樣式、顏色等,通過示例來看一下。

from matplotlib import pyplot as pltx = range(1, 7)
y = [13, 15, 14, 16, 15, 17]
'''
figsize:設置圖片的寬、高,單位為英寸
dpi:設置分辨率
'''
plt.figure(figsize=(8, 5), dpi=80)
plt.title('折線圖')
plt.xlabel('x 軸')
plt.ylabel('y 軸')
'''
color:顏色
linewidth:線的寬度
marker:折點樣式
linestyle:線的樣式,主要包括:'-'、'--'、'-.'、':'
'''
plt.plot(x, y, color='red', marker='o', linewidth='1', linestyle='--')
# 保存
# plt.savefig('test.png')
plt.show()

看一下效果:

2.1.2 多線

有時候我們可能存在多個指標對比的情況,也就是需要在一個圖中繪制多條折線,比如:我們要了解張三、李四隨著年齡增長體重的變化情況,示例如下所示:

from matplotlib import pyplot as pltx = range(15, 25)
y1 = [50, 55, 58, 65, 70, 68, 70, 72, 75, 70]
y2 = [52, 53, 60, 63, 65, 68, 75, 80, 85, 72]
plt.figure(figsize=(10, 6), dpi=80)
plt.title('體重年齡折線圖')
plt.xlabel('年齡(歲)')
plt.ylabel('體重(kg)')
plt.plot(x, y1, color='red', label='張三')
plt.plot(x, y2, color='blue', label='李四')
# 添加網格,alpha 為透明度
plt.grid(alpha=0.5)
# 添加圖例
plt.legend(loc='upper right')
plt.show()

看一下效果:

2.1.3 子圖

Matplotlib 可以實現在一張圖中繪制多個子圖,我們通過示例來看一下。

from matplotlib import pyplot as plt
import numpy as npa = np.arange(1, 30)
# 劃分子圖
fig, axs = plt.subplots(2, 2)
# 繪制子圖
axs1 = axs[0, 0]
axs2 = axs[0, 1]
axs3 = axs[1, 0]
axs4 = axs[1, 1]
axs1.plot(a, a)
axs2.plot(a, np.sin(a))
axs3.plot(a, np.log(a))
axs4.plot(a, a ** 2)
plt.show()

看一下效果:

2.2 散點圖

散點圖表示因變量隨自變量而變化的大致趨勢,我們通過示例來具體看一下如何繪制散點圖。

from matplotlib import pyplot as plt
import numpy as npx = np.arange(0, 20)
# 生成隨機數
y = np.random.randint(0, 20, size=20)
plt.title('散點圖')
plt.xlabel('x 軸')
plt.ylabel('y 軸')
plt.plot(x, y, 'ob')
plt.show()

看一下效果:

2.3 直方圖

直方圖也被稱為質量分布圖,主要用來表示數據的分布情況,我們通過示例來看一下如何繪制直方圖。

import matplotlib.pyplot as plt
import numpy as np# 生成隨機數
d1 = np.random.randn(5000)
d2 = np.random.randn(4000)
'''
bins:直方圖條目數
alpha:透明度
label:圖例名
'''
plt.hist(d1, bins=50, label = 'label1', alpha=0.8)
plt.hist(d2, bins=50, label = 'label2', alpha=0.5)
plt.grid(alpha=0.3)
plt.title('直方圖')
plt.xlabel('x 軸')
plt.ylabel('y 軸')
# 顯示圖例
plt.legend()
plt.show()

看一下效果:

2.4 條形圖

條形圖寬度相同,用高度或長短來表示數據多少,它可以橫置或縱置。

2.4.1 縱置

首先,我們來看一下如何繪制縱向條形圖,以學生成績為例,看一下具體實現。

import matplotlib.pyplot as plt
import numpy as nparr = np.arange(4)
x = ['張三', '李四', '王五', '趙六']
y = [77, 79, 70, 70]
'''
width:長條形寬度
label:圖例名
'''
rects = plt.bar(arr, y, width=0.3, label='語文')
'''
參數1:中點坐標
參數2:顯示值
'''
plt.xticks([idx for idx in range(len(x))], x)
plt.title('學生成績條形圖')
plt.xlabel('姓名')
plt.ylabel('成績')
plt.legend()
# 在條形圖上加標注
for rect in rects:height = rect.get_height()plt.text(rect.get_x() + rect.get_width() / 2, height, str(height), ha='center', va='bottom')
plt.show()

看一下效果:

2.4.2 橫置

我們接著再通過示例來看一下如何繪制橫向條形圖。

import matplotlib.pyplot as plt
import numpy as nparr = np.arange(4)
y = ['張三', '李四', '王五', '趙六']
x = [88, 79, 70, 66]
plt.barh(range(4), x, 0.4, label='語文')
plt.yticks(range(4), y)
plt.xlabel('成績')
plt.ylabel('姓名')
plt.title('學生成績條形圖')
plt.legend(loc='upper right')
for x, y in enumerate(x):plt.text(y + 0.2, x - 0.1, '%s' % y)
plt.show()

看一下效果:

2.4.3 多條

最后,我們來看一下一個學生要同時顯示語文和數學兩門成績時,如何通過 Matplotlib 來繪制條形圖。

import matplotlib.pyplot as plt
import numpy as nparr = np.arange(4)
x = ['張三', '李四', '王五', '趙六']
y1 = [88, 75, 77, 66]
y2 = [77, 79, 70, 70]
'''
width:長條形寬度
label:圖例名
'''
rects1 = plt.bar(arr, y1, width=0.3, label='語文')
rects2 = plt.bar(arr + 0.3, y2, width=0.3, label='數學')
'''
參數1:中點坐標
參數2:顯示值
參數3:間距
'''
plt.xticks([idx + 0.15 for idx in range(len(x))], x, rotation=10)
plt.title('學生成績條形圖')
plt.xlabel('姓名')
plt.ylabel('成績')
plt.legend()
# 編輯文本
for rect in rects1:height = rect.get_height()plt.text(rect.get_x() + rect.get_width() / 2, height, str(height), ha='center', va='bottom')
for rect in rects2:height = rect.get_height()plt.text(rect.get_x() + rect.get_width() / 2, height, str(height), ha='center', va='bottom')
plt.show()

看一下效果:

2.5 餅圖

餅圖顯示一個數據系列,我們通過示例來看一下如何繪制餅圖。

import matplotlib.pyplot as pltlabel_list = ['第一部分', '第二部分', '第三部分']
size = [50, 30, 20]
# 各部分顏色
color = ['red', 'green', 'blue']
# 各部分突出值
explode = [0, 0.1, 0]
'''
explode:設置各部分突出
label:設置圖例顯示內容
labeldistance:設置圖例內容距圓心位置
autopct:設置圓里面文本
shadow:設置是否有陰影
startangle:起始角度,默認從 0 開始逆時針轉
pctdistance:設置圓內文本距圓心距離
l_text:圓內部文本
p_text:圓外部文本
'''
patches, l_text, p_text = plt.pie(size, explode=explode, colors=color, labels=label_list, labeldistance=1.1, autopct="%1.1f%%", shadow=False, startangle=90, pctdistance=0.6)
# 設置橫軸和縱軸大小相等,這樣餅才是圓的
plt.axis('equal')
plt.legend(loc='upper left')
plt.show()

看一下效果:


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

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

相關文章

Scrapy分布式爬蟲數據統計全棧方案:構建企業級監控分析系統

引言:數據統計在分布式爬蟲中的戰略價值在分布式爬蟲系統中,??數據統計與分析??是系統優化的核心驅動力。根據2023年爬蟲工程調查報告:實施專業統計方案的爬蟲系統性能提升??40%以上??數據驅動的優化策略可減少??70%??的資源浪費…

計劃任務(at和cron命令介紹及操作)

簡介計劃任務主要做一些周期性的任務,目前最主要的是定期備份數據分類at:一次性調度執行cron:循環調度執行at簡介at 是一個用于安排一次性任務的命令行工具,適合在指定時間點執行單次任務語法at 時間 選項若要提交,通過…

[2025CVPR:圖象合成、生成方向]WF-VAE:通過小波驅動的能量流增強視頻 VAE 的潛在視頻擴散模型

論文概述? 這篇論文提出了一種名為WF-VAE(Wavelet Flow VAE)?的新型視頻變分自編碼器(Video VAE),旨在解決潛在視頻擴散模型(LVDM)中的關鍵瓶頸問題,包括高計算成本和潛在空間不連續性。WF-VAE利用小波變換(Wavelet Transform)來分解視頻信號,并通過能量流路徑優…

Map接口-實現類HashMap

目錄 一、什么是Map? 二、實現類HashMap 1.關鍵特點 無序、key唯一、value允許重復、key和value允許為null。 2.數據結構 2.1 JDK 1.7 2.2 JDK 1.8 2.3 關鍵參數 2.4 關鍵計算 3.擴容方式 3.1 初始化 3.2 擴容 4.常見方法 4.1 根據key存入value 4.2 …

深入解析Hadoop如何實現數據可靠性:三副本策略、校驗和驗證與Pipeline復制

Hadoop數據可靠性的重要性在大數據時代,數據可靠性已成為企業數字化轉型的生命線。根據IDC預測,到2025年全球數據總量將增長至175ZB,其中企業數據占比超過60%。面對如此龐大的數據規模,任何數據丟失或損壞都可能造成數百萬美元的經…

15.6 DeepSpeed+Transformers實戰:LLaMA-7B訓練效率提升210%,顯存直降73%

DeepSpeedTransformers實戰:LLaMA-7B訓練效率提升210%的底層邏輯與實操指南 當LLaMA-7B的訓練顯存需求達到78GB時,單卡A100(80GB)幾乎瀕臨溢出,更不用說普通GPU集群。而DeepSpeed與Hugging Face Transformers的深度集成,通過"ZeRO三階段優化+混合精度+梯度檢查點&q…

Nginx + PM2 實現Express API + React 前端 本地測試服務器搭建

一、工具準備 openSSL:需要針對https請求頭 生成對應的 自簽名證書。 Nginx:服務器搭建工具 nodeJS: Express API運行環境 PM2: node進程管理器。用于替代npm命令管理 啟動命令。 二、openSSL 本地自簽名證書生成。 創建服務器空文件夾&#xff08…

OTG原理講解

文章目錄一、什么是 OTG(USB On-The-Go)?? OTG 的定義:二、傳統 USB 與 OTG 的區別三、OTG 的核心機制:**通過 ID 引腳判斷角色**1. 對于 Micro-USB OTG:2. 電路如何感知 ID 引腳?四、OTG 電路…

數據結構系列之紅黑樹

前言 紅黑樹是比較重要的一顆樹了,map和set的底層就是紅黑樹,一定要牢牢記住。 一、什么是紅黑樹 首先:紅黑樹仍然是一顆搜索二叉樹,但他引入了顏色這一概念,每個結點多一個存儲位來存儲顏色,它通過維護下…

在OpenMP中,#pragma omp的使用

在OpenMP中,#pragma omp for 和 #pragma omp parallel for(或 #pragma omp parallel num_threads(N))有本質區別,主要體現在 并行區域的創建 和 工作分配方式 上。以下是詳細對比:1. #pragma omp for 作用 僅分配循環迭…

停止“玩具式”試探:深入拆解ChatGPT Agent的技術棧與實戰避坑指南

摘要: 當許多人還在用ChatGPT寫周報、生成樣板代碼時,其底層的Agent化能力已經預示著一場深刻的開發范式變革。這不再是簡單的“AI輔助”,而是“人機協同”的雛形。本文旨在穿透表面的功能宣傳,從技術棧層面拆解Agent模式的實現基…

element-plus安裝以及使用

element-plus時為vue.js 3開發的組件庫。 在引入前需要做如下準備 安裝node.js https://blog.csdn.net/zlpzlpzyd/article/details/147704723 安裝vue的腳手架vue-cli https://blog.csdn.net/zlpzlpzyd/article/details/149647351 安裝element-plus github地址 https://git…

學習隨想錄-- web3學習入門計劃

#60 轉方向 web3 golang 以太坊應用 這是課表部分(Golang以太坊方向) Sheet b站up學習計劃 第一階段:基礎能力構建(1-2 個月) 學習目標 掌握 Golang 核心語法與以太坊底層基礎概念,建立開發知識框架。…

【RAG優化】PDF復雜表格解析問題分析

在構建檢索增強生成(RAG)應用時,PDF文檔無疑是最重要、也最普遍的知識來源之一。然而,PDF中潛藏著RAG系統的難點問題——復雜表格。這些表格富含高密度的結構化信息,對回答精準問題至關重要,但其復雜的視覺布局(多層表頭、合并單元格、跨頁表格等)常常讓標準的文本提取…

ReAct Agent(LangGraph實現)

文章目錄參考資料一 AI Agent二 ReAct三 LangGraph實現ReAct代理3.1 SerperAPI實時聯網搜索3.2 ReAct實現參考資料 entic RAG 架構的基本原理與應用入門 一 AI Agent AI Agent 整個過程是一個動態循環。Agent不斷從環境中學習,通過其行動影響環境,然后…

如何從0到1的建立組織級項目管理體系【現狀診斷】

今天我想給大家分享是“如何在企業中從0到1的去建立PMO的組織級項目管理體系。”的系列文章,這是我近幾年來一直在努力的嘗試去探索和實踐的過程,從0到1的過程。當我最開始去接手這樣一個場景的時候所需要做的第一件事情是診斷和差距分析。這是多年以來做…

網絡通信協議詳解:TCP協議 vs HTTP協議

在計算機網絡中,TCP(傳輸控制協議)和HTTP(超文本傳輸協議)是兩個核心協議,但它們的職責和層級完全不同。TCP是底層傳輸協議,負責數據的可靠傳輸;HTTP是應用層協議,定義了…

[Qt]QString隱式拷貝

引言在Qt框架中,QString 作為字符串處理的核心類,其高效的內存管理機制一直是開發者津津樂道的特性。這背后的關鍵便是 隱式共享(Implicit Sharing),也稱為 寫時復制(Copy-On-Write, COW)。本文…

命令行創建 UV 環境及本地化實戰演示—— 基于《Python 多版本與開發環境治理架構設計》的最佳實踐

命令行創建 UV 環境及本地化實戰:基于架構設計的最佳實踐 Python 多版本環境治理理念驅動的系統架構設計:三維治理、四級隔離、五項自治 原則-CSDN博客 使用 Conda 工具鏈創建 UV 本地虛擬環境全記錄——基于《Python 多版本與開發環境治理架構設計》-CS…

跨域問題全解:從原理到實戰

在計算機網絡中,跨域(Cross-Origin) 指的是瀏覽器出于安全考慮,限制網頁腳本(如 JavaScript)向與當前頁面不同源(Origin) 的服務器發起請求的行為。這是由瀏覽器的同源策略&#xff…