數據處理-Matplotlib 繪圖展示

在這里插入圖片描述

文章目錄

    • 1. Matplotlib 簡介
    • 2. 安裝
    • 3. Matplotlib Pyplot
    • 4. 繪制圖表
      • 1. 折線圖
      • 2. 散點圖
      • 3. 柱狀圖
      • 4. 餅圖
      • 5. 直方圖
    • 5. 中文顯示

1. Matplotlib 簡介

Matplotlib 是 Python 的繪圖庫,它能讓使用者很輕松地將數據圖形化,并且提供多樣化的輸出格式。

Matplotlib 可以用來繪制各種靜態,動態,交互式的圖表。

Matplotlib 是一個非常強大的 Python 畫圖工具,我們可以使用該工具將很多數據通過圖表的形式更直觀的呈現出來。

Matplotlib 可以繪制線圖、散點圖、等高線圖、條形圖、柱狀圖、3D 圖形、甚至是圖形動畫等等。

2. 安裝

升級 pip:

python3 -m pip install -U pip

安裝 matplotlib 庫:

python3 -m pip install -U matplotlib

安裝完成后,我們就可以通過 import 來導入 matplotlib 庫:

import matplotlibprint(matplotlib.__version__)

image-20240713135518711

3. Matplotlib Pyplot

Pyplot 是 Matplotlib 的子庫,提供了和 MATLAB 類似的繪圖 API。

Pyplot 是常用的繪圖模塊,能很方便讓用戶繪制 2D 圖表。

Pyplot 包含一系列繪圖函數的相關函數,每個函數會對當前的圖像進行一些修改,例如:給圖像加上標記,生新的圖像,在圖像中產生新的繪圖區域等等。

使用的時候,我們可以使用 import 導入 pyplot 庫,并設置一個別名 plt

import matplotlib.pyplot as plt

這樣我們就可以使用 plt 來引用 Pyplot 包的方法。

以下是一些常用的 pyplot 函數:

  • plot():用于繪制線圖和散點圖
  • scatter():用于繪制散點圖
  • bar():用于繪制垂直條形圖和水平條形圖
  • hist():用于繪制直方圖
  • pie():用于繪制餅圖
  • imshow():用于繪制圖像
  • subplots():用于創建子圖

4. 繪制圖表

1. 折線圖

import  matplotlib.pyplot as plt
#繪制簡單的圖表
input_values = [1,2,3,4,5]
squares = [1,4,9,16,25]
plt.plot(input_values,squares,linewidth=1)
plt.show()

image-20240713140220406

繪制過程中,我們可以自定義線的樣式,包括線的類型、顏色和大小等

1.線的類型可以使用 linestyle 參數來定義,簡寫為 ls

類型簡寫說明
‘solid’ (默認)‘-’實線
‘dotted’‘:’點虛線
‘dashed’‘–’破折線
‘dashdot’‘-.’點劃線
‘None’‘’ 或 ’ ’不畫線
import matplotlib.pyplot as plt
import numpy as npypoints = np.array([6, 2, 13, 10])plt.plot(ypoints, linestyle = 'dotted')
plt.show()

2.線的顏色可以使用 color 參數來定義,簡寫為 c

顏色標記描述
‘r’紅色
‘g’綠色
‘b’藍色
‘c’青色
‘m’品紅
‘y’黃色
‘k’黑色
‘w’白色

這里是基礎的簡單顏色,可以自定義顏色,查一下html顏色值即可

import matplotlib.pyplot as plt
import numpy as npypoints = np.array([6, 2, 13, 10])plt.plot(ypoints, color = 'r')
plt.show()

3.線的寬度可以使用 linewidth 參數來定義,簡寫為 lw,值可以是浮點數,如:12.05.67 等。

import matplotlib.pyplot as plt
import numpy as npypoints = np.array([6, 2, 13, 10])plt.plot(ypoints, linewidth = '12.5')
plt.show()

4.多條線的繪制

plot() 方法中可以包含多對 x,y 值來繪制多條線。

import matplotlib.pyplot as plt
import numpy as npy1 = np.array([3, 7, 5, 9])
y2 = np.array([6, 2, 13, 10])plt.plot(y1)
plt.plot(y2)plt.show()

2. 散點圖

使用 pyplot 中的 scatter() 方法來繪制散點圖。

scatter() 方法語法格式如下:

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)
import numpy as np
import matplotlib.pyplot as plt
from pylab import *
plt.rcParams['figure.figsize']=(2,2)
x=np.random.normal(size=100)
y=np.random.normal(size=100)
plt.scatter(x,y)
plt.show()

image-20240713141111401

注:繪制折線圖、散點圖時,如果想給坐標定義一些不一樣的標記,就可以使用 plot() 方法的 marker 參數來定義。

import matplotlib.pyplot as plt
import numpy as npypoints = np.array([1,3,4,5,8,9,6,1,3,4,5,2,4])plt.plot(ypoints, marker = 'o')
plt.show()

image-20240713140838327

3. 柱狀圖

可以使用 pyplot 中的 bar() 方法來繪制柱形圖。

bar() 方法語法格式如下:

matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)

參數說明:

x:浮點型數組,柱形圖的 x 軸數據。

height:浮點型數組,柱形圖的高度。

width:浮點型數組,柱形圖的寬度。

bottom:浮點型數組,底座的 y 坐標,默認 0。

align:柱形圖與 x 坐標的對齊方式,‘center’ 以 x 位置為中心,這是默認值。 ‘edge’:將柱形圖的左邊緣與 x 位置對齊。要對齊右邊緣的條形,可以傳遞負數的寬度值及 align=‘edge’。

**kwargs::其他參數。

import numpy as np
import matplotlib.pyplot as plt
# 創建一個點數為 8 x 6 的窗口, 并設置分辨率為 80像素/每英寸
plt.figure(figsize=(10, 10), dpi=80)
# 柱子總數
N = 10
# 包含每個柱子對應值的序列
values = (56796,42996,24872,13849,8609,5331,1971,554,169,26)
# 包含每個柱子下標的序列
index = np.arange(N)
# 柱子的寬度
width = 0.45
# 繪制柱狀圖, 每根柱子的顏色為紫羅蘭色
p2 = plt.bar(index, values, width, label="num", color="#87CEFA")
# 設置橫軸標簽
plt.xlabel('clusters')
# 設置縱軸標簽
plt.ylabel('number of reviews')
# 添加標題
plt.title('Cluster Distribution')
# 添加縱橫軸的刻度
plt.xticks(index, ('mentioned1cluster', 'mentioned2cluster', 'mentioned3cluster', 'mentioned4cluster', 'mentioned5cluster', 'mentioned6cluster', 'mentioned7cluster', 'mentioned8cluster', 'mentioned9cluster', 'mentioned10cluster'))
# plt.yticks(np.arange(0, 10000, 10))
# 添加圖例
plt.legend(loc="upper right")
plt.show()

image-20240713141437729

4. 餅圖

可以使用 pyplot 中的 pie() 方法來繪制餅圖。

pie() 方法語法格式如下:

matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=0, 0, frame=False, rotatelabels=False, *, normalize=None, data=None)[source]

參數說明:

  • x:浮點型數組或列表,用于繪制餅圖的數據,表示每個扇形的面積。
  • explode:數組,表示各個扇形之間的間隔,默認值為0。
  • labels:列表,各個扇形的標簽,默認值為 None。
  • colors:數組,表示各個扇形的顏色,默認值為 None。
  • autopct:設置餅圖內各個扇形百分比顯示格式,%d%% 整數百分比,%0.1f 一位小數, %0.1f%% 一位小數百分比, %0.2f%% 兩位小數百分比。
  • labeldistance:標簽標記的繪制位置,相對于半徑的比例,默認值為 1.1,如 <1則繪制在餅圖內側。
  • pctdistance::類似于 labeldistance,指定 autopct 的位置刻度,默認值為 0.6。
  • shadow::布爾值 True 或 False,設置餅圖的陰影,默認為 False,不設置陰影。
  • radius::設置餅圖的半徑,默認為 1。
  • startangle::用于指定餅圖的起始角度,默認為從 x 軸正方向逆時針畫起,如設定 =90 則從 y 軸正方向畫起。
  • counterclock:布爾值,用于指定是否逆時針繪制扇形,默認為 True,即逆時針繪制,False 為順時針。
  • wedgeprops:字典類型,默認值 None。用于指定扇形的屬性,比如邊框線顏色、邊框線寬度等。例如:wedgeprops={‘linewidth’:5} 設置 wedge 線寬為5。
  • textprops:字典類型,用于指定文本標簽的屬性,比如字體大小、字體顏色等,默認值為 None。
  • center:浮點類型的列表,用于指定餅圖的中心位置,默認值:(0,0)。
  • frame:布爾類型,用于指定是否繪制餅圖的邊框,默認值:False。如果是 True,繪制帶有表的軸框架。
  • rotatelabels:布爾類型,用于指定是否旋轉文本標簽,默認為 False。如果為 True,旋轉每個 label 到指定的角度。
  • data:用于指定數據。如果設置了 data 參數,則可以直接使用數據框中的列作為 x、labels 等參數的值,無需再次傳遞。
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm  # 字體管理器
# 準備字體
my_font = fm.FontProperties(fname="C:\Windows\Fonts\simkai.ttf")
# 準備數據
data = [0.16881, 0.14966, 0.07471, 0.06992, 0.04762, 0.03541, 0.02925, 0.02411, 0.02316, 0.01409, 0.36326]
# 準備標簽
labels = ['Java', 'C', 'C++', 'Python', 'Visual Basic.NET', 'C#', 'PHP', 'JavaScript', 'SQL', 'Assembly langugage','其他']
# 將排列在第4位的語言(Python)分離出來
explode = [0, 0, 0, 0.7, 0, 0, 0, 0, 0, 0, 0]
# 使用自定義顏色
colors = ['red', 'pink', 'magenta', 'purple', 'orange']
# 將橫、縱坐標軸標準化處理,保證餅圖是一個正圓,否則為橢圓
plt.axes(aspect='equal')
# 控制X軸和Y軸的范圍(用于控制餅圖的圓心、半徑)
plt.xlim(0, 8)
plt.ylim(0, 8)
# 不顯示邊框
plt.gca().spines['right'].set_color('none')
plt.gca().spines['top'].set_color('none')
plt.gca().spines['left'].set_color('none')
plt.gca().spines['bottom'].set_color('none')
# 繪制餅圖
plt.pie(x=data,  # 繪制數據labels=labels,  # 添加編程語言標簽explode=explode,  # 突出顯示Pythoncolors=colors,  # 設置自定義填充色autopct='%.3f%%',  # 設置百分比的格式,保留3位小數pctdistance=0.8,  # 設置百分比標簽和圓心的距離labeldistance=1.0,  # 設置標簽和圓心的距離startangle=180,  # 設置餅圖的初始角度center=(4, 4),  # 設置餅圖的圓心(相當于X軸和Y軸的范圍)radius=3.8,  # 設置餅圖的半徑(相當于X軸和Y軸的范圍)counterclock=False,  # 是否為逆時針方向,False表示順時針方向wedgeprops={'linewidth': 1, 'edgecolor': 'green'},  # 設置餅圖內外邊界的屬性值textprops={'fontsize': 12, 'color': 'black','fontproperties':my_font},  # 設置文本標簽的屬性值frame=1)  # 是否顯示餅圖的圓圈,1為顯示
# 不顯示X軸、Y軸的刻度值
plt.xticks(())
plt.yticks(())
# 添加圖形標題
plt.title('2018年8月的編程語言指數排行榜',fontproperties=my_font)
# 顯示圖形
plt.show()

image-20240713141651642

5. 直方圖

可以使用 pyplot 中的 hist() 方法來繪制直方圖。

hist() 方法是 Matplotlib 庫中的 pyplot 子庫中的一種用于繪制直方圖的函數。

hist() 方法可以用于可視化數據的分布情況,例如觀察數據的中心趨勢、偏態和異常值等。

hist() 方法語法格式如下:

matplotlib.pyplot.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, **kwargs)
import numpy as np
import matplotlib.pyplot as plt
from pylab import *
x=np.random.normal(size=1000)
plt.hist(x,bins=10)  #bins參數設置分桶數目
plt.show()

image-20240713141753930

5. 中文顯示

Matplotlib 中文顯示不是特別友好,要在 Matplotlib 中顯示中文,我們可以通過兩個方法:

  • 設置 Matplotlib 的字體參數。
  • 下載使用支持中文的字體庫。

在未設置字體,默認情況顯示如下,中文部分不能正常顯示:

img

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

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

相關文章

如何定義版本號--語義化版本

前言 版本號(version number)是版本的標識號。每一個操作系統&#xff08;或廣義的講&#xff0c;每一個軟件&#xff09;都有一個版本號。版本號能使用戶了解所使用的操作系統是否為最新的版本以及它所提供的功能與設施。 例如在Python項目依賴中會看到 requires-python &q…

zdppy+onlyoffice實現重命名文件的功能

參考文檔&#xff1a;https://api.onlyoffice.com/zh/editors/rename 步驟圖&#xff1a; 實現步驟&#xff1a; 用戶在 文檔編輯器中為文檔指定一個新名稱。 文檔編輯器 將文檔的新名稱通知給 文檔管理器。 文檔管理器 將文檔的新名稱發送到 文檔存儲服務&#xff0c;在這里…

使用jsencrypt在web前端對字符串進行Ras加密

話不多說&#xff0c;上代碼 實例代碼 下面方法&#xff0c;在網頁中先引入jsencrypt.min.js。然后調用ToEncrypt方法示例輸出加密&#xff0c;解密后的結果。 <script src"/js/jsencrypt.min.js"></script> //加密測試function ToEncrypt(){// 假設…

synchronized關鍵字詳解

文章目錄 synchronized使用示例實現原理鎖的升級synchronized與可見性synchronized與原子性synchronized與有序性 synchronized synchronized是Java提供的關鍵字譯為同步&#xff0c;是Java中用于實現線程同步的一種機制。它可以確保在同一時間只有一個線程能夠執行某段代碼&a…

【Python系列】數字的bool值

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

泌尿系統疾病病人的護理

一、泌尿系統疾病病人的一般護理要點 對于泌尿系統疾病的病人&#xff0c;護理是至關重要的。首先&#xff0c;要密切觀察病人的生命體征&#xff0c;包括體溫、脈搏、呼吸和血壓。 飲食方面&#xff0c;應根據病人的具體病情進行調整。例如&#xff0c;對于有水腫的病人&#…

js登陸驗證

當開始制作網頁時&#xff0c;就需要做一個判斷&#xff0c;不管在第幾頁進入&#xff0c;都要加一個登陸驗證&#xff0c;只有用戶有賬號&#xff0c;才能進入網頁&#xff0c;瀏覽網頁信息。下面就來看一下&#xff0c;使用JavaScript幾行代碼實現登陸驗證。 首先 登錄頁是i…

vue父組件樣式穿透修改子組件樣式

在 Vue 中&#xff0c;使用父組件樣式穿透到子組件通常不推薦&#xff0c;因為它破壞了樣式的作用域隔離&#xff0c;但如果你確實需要這樣做&#xff0c;可以使用深度選擇器。Vue 2 使用 ::v-deep&#xff0c;而 Vue 3 使用 /deep/ 或 ::v-deep 都可以。 以下是使用深度選擇器…

MVC之 IHttpModule管道模型《二》

》》》注意&#xff1a;在http請求的處理過程中&#xff0c;只能調用一個HttpHandler&#xff0c;但可以調用多個HttpModule。 HTTP Modules ASP.NET請求處理過程是基于管道模型的&#xff0c;這個管道模型是由多個HttpModule和HttpHandler組成&#xff0c;當請求到達HttpMod…

java-mysql-insert 操作

在 Java 中&#xff0c;使用 JDBC 插入數據到 MySQL 數據庫是非常常見的操作。以下是一個詳細的步驟&#xff0c;展示如何使用 JDBC 插入數據到 MySQL 數據庫。 ### 一、準備工作 #### 1. 下載并安裝 MySQL 如果您還沒有安裝 MySQL&#xff0c;可以從 MySQL 官方網站下載并安…

UART編程

Q:為什么使用串口前要先在電腦上安裝CH340驅動&#xff1f; 中斷的作用&#xff1f; 環形buffer的作用&#xff1f; static和valitate的作用 三種編程方式簡介 也可以通過DMA方式減小CPU資源的消耗 直接把數據在SRAM內存和UART模塊進行傳輸 &#xff0c;流程&#xff1a; …

玩家自行定制內存將古老的386 PC內存升級到64MB容量

比爾蓋茨曾說&#xff1a;“無論對誰來說&#xff0c;640K內存都足夠了。” 如果你是一個還停留在 30 針 SIMM 時代的老式電腦愛好者&#xff0c;那么你的內存升級選擇是相當有限的。不過&#xff0c;YouTube 上的一個頻道已經展示了如何將古老的 386 系統內存升級到令人"…

【AI應用探討】—對抗學習(AL)應用場景

目錄 一、圖像領域 二、自然語言處理&#xff08;NLP&#xff09; 三、安全領域 四、其他領域 五、醫療健康領域 六、游戲與娛樂領域 七、機器人與自動化領域 八、科研與教育領域 九、物聯網與邊緣計算 十、金融科技 十一、能源與環境 十二、社會科學與人文研究 十…

Linux內核編譯安裝 - Deepin,Debian系

為什么要自己編譯內核 優點 定制化&#xff1a;你可以根據自己的硬件和需求配置內核&#xff0c;去掉不必要的模塊&#xff0c;優化性能。性能優化&#xff1a;移除不需要的驅動程序和特性&#xff0c;減小內核體積&#xff0c;提高系統性能。最新特性和修復&#xff1a;獲取…

什么是開放最短路徑優先(OSPF)

OSPF是一種典型的鏈路狀態路由協議&#xff0c;一般在同一個路由域中使用。這里的路由域指的是一個自治系統&#xff08;AS&#xff09;&#xff0c;是指一組通過統一的路由策略或協議相互交換路由信息的網絡。在這個自治系統&#xff08;AS&#xff09;中&#xff0c;所有的OS…

【Leetcode】最小數字游戲

你有一個下標從 0 開始、長度為 偶數 的整數數組 nums &#xff0c;同時還有一個空數組 arr 。Alice 和 Bob 決定玩一個游戲&#xff0c;游戲中每一輪 Alice 和 Bob 都會各自執行一次操作。游戲規則如下&#xff1a; 每一輪&#xff0c;Alice 先從 nums 中移除一個 最小 元素&…

等保測評是做什么的

等保測評的定義和目的 等保測評&#xff0c;全稱為信息安全等級保護測評&#xff0c;是依據國家信息安全等級保護規范規定&#xff0c;由具有資質的測評機構對信息系統安全等級保護狀況進行檢測評估的活動。等保測評的目的是驗證網絡系統或應用是否滿足相應的安全保護等級要求…

【Linux】System V消息隊列 System V信號量

&#x1f466;個人主頁&#xff1a;Weraphael ?&#x1f3fb;作者簡介&#xff1a;目前正在學習c和算法 ??專欄&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起進步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指點一二 如果文章對…

前端 JS 經典:小數運算不精確

原因&#xff1a;計算機對小數的存儲是二進制的&#xff0c;有限位數的二進制做算法得到的是有限位數&#xff0c;無限位數的二進制做運算&#xff0c;得到的是無限位數。 如下&#xff1a;0.5 和 0.25 轉二進制是有限位數&#xff0c;0.3 和 0.2 轉二進制是無限位數。 (0.5)…

Spark調度底層執行原理詳解(第35天)

系列文章目錄 一、Spark應用程序啟動與資源申請 二、DAG&#xff08;有向無環圖&#xff09;的構建與劃分 三、Task的生成與調度 四、Task的執行與結果返回 五、監控與容錯 六、優化策略 文章目錄 系列文章目錄前言一、Spark應用程序啟動與資源申請1. SparkContext的創建2. 資…