日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

手把手教你用Matplotlib进行数据可视化

發布時間:2025/3/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 手把手教你用Matplotlib进行数据可视化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


導讀:Matplotlib是建立在NumPy數組上的一個多平臺數據可視化庫。在2002年,約翰·亨特(John Hunter)提出Matplotlib,最初的構思是設計為IPython的一個補丁,以便能夠從命令行啟用交互式MATLAB樣式繪圖。

近幾年,更新、更炫酷的工具(例如,R語言中的ggplot和ggvis)層出不窮,最終取代了Matplotlib,可是Matplotlib仍然是一個經過良好測試的、非常重要的跨平臺圖形引擎。

作者:阿迪蒂亞·夏爾馬(Aditya Sharma)、維什韋什·拉維·什里馬利(Vishwesh Ravi Shrimali)、邁克爾·貝耶勒(Michael Beyeler)

來源:大數據DT(ID:hzdashuju)

01 導入Matplotlib

如果你安裝了完整的Python Anaconda,那么你已經安裝了Matplotlib,可以開始了。否則,你可能要訪問官網獲取安裝說明。

http://matplotlib.org

就像我們用縮寫np來表示NumPy一樣,我們也會用一些標準的縮寫來表示Matplotlib導入:

import?matplotlib?as?mpl import?matplotlib.pyplot?as?plt

plt是我們最常用的一個接口。

02 生成一個簡單的圖形

言歸正傳,讓我們創建第一個圖形。

假設我們要繪制正弦函數sin(x)的一個簡單線圖。我們希望函數求x軸(0≤x≤10)上的所有值。我們將使用NumPy的linspace函數在x軸上創建一個線性空間,x值從0到10,共100個樣本點:

import?numpy?as?np x?=?np.linspace(0,?10,?100)

我們可以使用NumPy的sin函數求sin函數的所有x值,并通過調用plt的plot函數可視化結果:

plt.plot(x,?np.sin(x))

你親自試過了嗎?發生什么了?有什么發現嗎?

問題是,這取決于你在何處運行這個腳本,你可能什么都看不到。以下是可以考慮的可能性:

1. 從.py腳本繪圖

如果你正從一個腳本運行matplotlib,那么你只需要調用plt,如下所示:

plt.show()

調用后,圖形就會顯示出來!

2. 從IPython shell繪圖

這實際上是以交互方式運行matplotlib的最便捷的方式之一。要顯示繪圖,你需要在啟動IPython之后,調用%matplotlib魔術命令:

%matplotlib Using?matplotlib?backend:?Qt5Agg import?matplotlib.pyplot?as?plt

然后,所有圖都會自動顯示出來,不必每次都調用plt.show()。

3. 從Jupyter Notebook繪圖

如果你從基于瀏覽器的Jupyter Notebook上查看這段代碼,你需要使用同樣的%matplotlib魔術命令。可是,你還可以選擇將圖形直接嵌入notebook中,這有兩種可能的結果:

  • %matplotlib notebook將生成的交互式圖嵌入notebook中。

  • %matplotlib inline將生成的靜態圖嵌入notebook中。

我們通常會選擇內聯選項:

%matplotlib?inline

現在,讓我們再試一次:

plt.plot(x,?np.sin(x))

上述命令給出的輸出如圖2-4所示。

▲圖2-4 應用內聯選項生成的圖

稍后,如果你想保存圖表,可以直接從IPython或Jupyter Notebook的選項中保存:

plt.savefig('figures/02.03-sine.png')

只要保證使用所支持的文件后綴即可,例如.jpg、.png、.tif、.svg、.eps或者.pdf。

在導入matplotlib之后,運行plt.style.use(style_name),你可以更改繪圖的樣式。在plt.style.available中列出了所有可用的樣式。例如,試試plt.style.use('fivethirtyeight')、plt.style.use('ggplot')或者plt.style.use('seaborn-dark')。為了增加樂趣,可以運行plt.xkcd(),再嘗試繪制其他內容。

03 可視化外部數據集的數據

作為本文的最后一個測試,讓我們可視化一些來自外部數據集的數據,例如scikit-learn的digits數據集。

具體來說,我們將需要3個可視化工具:

  • 用于實際數據的scikit-learn

  • 用于數據處理的NumPy

  • Matplotlib

首先,讓我們導入所有這些可視化工具:

import?numpy?as?np from?sklearn?import?datasets import?matplotlib.pyplot?as?plt %matplotlib?inline

第一步是實際加載數據:

digits?=?datasets.load_digits()

如果我們沒有記錯的話,digits應該有2個不同的字段:一個是data字段,包含實際的圖像數據;另一個是target字段,包含圖像標簽。

與其相信我們的記憶,不如讓我們研究一下digits對象。這通過輸入字段名稱、添加句點、再按下Tab鍵—digits.<TAB>來實現。這會顯示出digits對象還包含了一些其他字段,例如一個名為images的字段。images和data這2個字段似乎只是形狀不同:

print(digits.data.shape) print(digits.images.shape)

輸出結果:

(1797,?64) (1797,?8,?8)

在這兩個例子中,第一維都對應于數據集中的圖像數。但是data將所有像素排列在一個大的向量中,而images則保留了每個圖像的8×8空間排列。

因此,如果我們想繪制單張圖像,images字段可能更合適。首先,使用NumPy的數組切割,從數據集中抓取一張圖像:

img?=?digits.images[0,?:,?:]

這里,我們說想要抓取長為1797項的數組中的第一行,以及所有對應的8×8=64個像素。然后,我們可以使用plt的imshow函數繪制圖像:

plt.imshow(img,?cmap='gray') plt.savefig('figures/02.04-digit0.png')

上述命令給出的輸出如圖2-5所示。請注意,圖像是模糊的,因為我們將該圖像調整到了更大的尺寸。原始圖像的大小只有8×8。

▲圖2-5 生成單張圖像的示例結果

此外,我們還可以使用cmap參數指定一個彩圖。在默認情況下,Matplotlib使用MATLAB的默認彩圖jet。可是,對于灰度圖像,gray彩圖更有意義。

最后,我們可以利用plt的subplot函數繪制一組數字樣本。subplot函數與在MATLAB中一樣,我們指定行數、列數以及當前子圖的索引(從1開始)。我們將使用一個for循環遍歷數據集中的前10個圖像,每個圖像都有自己的子圖:

plt.figure(figsize=(14,?4))for?image_index?in?range(10):#?images?are?0-indexed,?subplots?are?1-indexedsubplot_index?=?image_index?+?1plt.subplot(2,?5,?subplot_index)plt.imshow(digits.images[image_index,?:,?:],?cmap='gray')

生成的輸出如圖2-6所示。

▲圖2-6 生成包含10個數字的一組子圖

對于各種數據集,另一個很好的資源是本書作者邁克爾·貝耶勒的母校加州大學歐文分校的機器學習資源庫:

http://archive.ics.uci.edu/ml/index.php

關于作者:阿迪蒂亞·夏爾馬(Aditya Sharma),羅伯特·博世(Robert Bosch)公司的一名高級工程師,致力于解決真實世界的自動計算機視覺問題。曾獲得羅伯特·博世公司2019年人工智能編程馬拉松的首名。

維什韋什·拉維·什里馬利(Vishwesh Ravi Shrimali),于2018年畢業于彼拉尼博拉理工學院(BITS Pilani)機械工程專業。此后一直在BigVision LLC從事深度學習和計算機視覺方面的工作,還參與了官方OpenCV課程的創建。

邁克爾·貝耶勒(Michael Beyeler),是華盛頓大學神經工程和數據科學的博士后研究員,致力于仿生視覺的計算模型研究,以為盲人植入人工視網膜(仿生眼睛),改善盲人的感知體驗。他的工作屬于神經科學、計算機工程、計算機視覺和機器學習的交叉領域。

本文摘編自《機器學習:使用OpenCV、Python和scikit-learn進行智能圖像處理(原書第2版)》,經出版方授權發布。

延伸閱讀《機器學習》

點擊上圖了解及購買

轉載請聯系微信:DoctorData

推薦語:保姆級OpenCV入門實戰手冊——“蝴蝶書”全新升級!通過具體的編程實踐案例,介紹最新OpenCV 4版本所提供的大量新特性和平臺改進。通過書中提供的用例代碼,你可以快速熟悉并掌握機器學習領域的相關知識,掌握使用OpenCV 4構建智能計算機視覺應用程序所需要的機器學習技能。

劃重點????

干貨直達????

  • 詳解華為12種數據采集技術及應用實踐

  • 如何讓圖表更有說服力?6大準則和1個經典案例給你講明白

  • Python循環語句代碼逐行詳解:while、for、break和continue

  • 手把手教你用Python的NumPy包處理數據

更多精彩????

在公眾號對話框輸入以下關鍵詞

查看更多優質內容!

PPT?|?讀書?|?書單?|?硬核?|?干貨?|?講明白?|?神操作

大數據?|?云計算?|?數據庫?|?Python?|?可視化

AI?|?人工智能?|?機器學習?|?深度學習?|?NLP

5G?|?中臺?|?用戶畫像?|?1024?|?數學?|?算法?|?數字孿生

據統計,99%的大咖都完成了這個神操作

????

總結

以上是生活随笔為你收集整理的手把手教你用Matplotlib进行数据可视化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。