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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python实操:手把手教你用Matplotlib把数据画出来

發布時間:2025/3/15 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python实操:手把手教你用Matplotlib把数据画出来 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


導讀:獲取數據之后,而不知道如何查看數據,用途還是有限的。幸好,我們有Matplotlib!


Matplotlib 是基于 NumPy 數組構建的多平臺數據可視化庫。它是John Hunter 在2002年構想的,原本的設計是給 IPython 打補丁,讓命令行中也可以有交互式的 MATLAB 風格的畫圖工具。


在近些年,已經出現了更新更好的工具最終替代了 Matplotlib(比如 R 語言中的ggplot和ggvis),?但 Matplotlib 依舊是一個經過良好測試的、跨平臺的圖形引擎。


作者:邁克爾·貝耶勒(Michael Beyeler)

如需轉載請聯系大數據(ID:hzdashuju)




01 引入 Matplotlib


如果已安裝Anaconda Python版本,就已經安裝好了可以使用的 Matplotlib。否則,可能要訪問官網并從中獲取安裝說明:


http://matplotlib.org


正如使用np作為 NumPy 的縮寫,我們將使用一些標準的縮寫來表示 Matplotlib 的引入:


In?[1]:?import?matplotlib?as?mplIn?[2]:?import?matplotlib.pyplot?as?pltimport?matplotlib?as?mpl
In?[2]:?import?matplotlib.pyplot?as?plt


在本書中,plt接口會被頻繁使用。



02 生成一個簡單的繪圖


讓我們創建第一個繪圖。


假設想要畫出正弦函數sin(x)的線性圖。得到函數在x坐標軸上0≤x<10內所有點的值。我們將使用 NumPy 中的 linspace 函數來在x坐標軸上創建一個從0到10的線性空間,以及100個采樣點:


In?[3]:?import?numpy?as?npIn?[4]:?x?=?np.linspace(0,?10,?100)import?numpy?as?np
In?[4]:?x?=?np.linspace(0,?10,?100)


可以使用 NumPy 中的sin函數得到所有x點的值,并通過調用plt中的plot函數把結果畫出來:


In?[5]:?plt.plot(x,?np.sin(x))


你親自嘗試了嗎?發生了什么嗎?有沒有什么東西出現?


實際情況是,取決于你在哪里運行腳本,可能無法看到任何東西。有下面幾種可能性:


1. 從.py腳本中繪圖


如果從一個腳本中運行 Matplotlib,需要加上下面的這行調用:


plt.show()


在腳本末尾調用這個函數,你的繪圖就會出現!


2. 從 IPython shell 中繪圖


這實際上是交互式地執行Matplotlib最方便的方式。為了讓繪圖出現,需要在啟動 IPython 后使用所謂的%matplotlib魔法命令。


In?[1]:?%matplotlibUsing?matplotlib?backend:?TkAggIn?[2]:?import?matplotlib.pyplot?as?plt
Using?matplotlib?backend:?TkAgg
In?[2]:?import?matplotlib.pyplot?as?plt


接下來,無須每次調用plt.show()函數,所有的繪圖將會自動出現。


3. 從 Jupyter Notebook 中繪圖


如果你是從基于瀏覽器的 Jupyter Notebook 中看這段代碼,需要使用同樣的%matplotlib魔法命令。然而,也可以直接在notebook中嵌入圖形,這會有兩種輸出選項:



在本書中,將會使用inline選項:


In?[6]:?%matplotlib?inline


現在再次嘗試一下:


In?[7]:?plt.plot(x,?np.sin(x))Out[7]:?[<matplotlib.lines.Line2D?at?0x7f3aac426eb8>]
Out[7]:?[<matplotlib.lines.Line2D?at?0x7f3aac426eb8>]


上面的命令會得到下面的繪圖輸出結果:


▲使用 Matplotlib 繪制正弦函數圖像


如果想要把繪圖保存下來留作以后使用,可以直接在 IPython 或者 Jupyter Notebook 使用下面的命令保存:


In?[8]:?plt.savefig('figures/02.03-sine.png')'figures/02.03-sine.png')


僅需要確保你使用了支持的文件后綴,比如.jpg、.png、.tif、.svg、.eps或者.pdf。


Tips:可以在引入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中的數字數據集。


為此,需要三個可視化工具:



那么開始引入這些包吧:


In?[1]:?import?numpy?as?np...?????from?sklearn?import?datasets...?????import?matplotlib.pyplot?as?plt...?????%?matplotlib?inlineimport?numpy?as?np
...?????from?sklearn?import?datasets
...?????import?matplotlib.pyplot?as?plt
...?????%?matplotlib?inline


第一步是載入實際數據:


In?[2]:?digits?=?datasets.load_digits()


如果沒記錯的話,digits應該有兩個不同的數據域:data域包含了真正的圖像數據,target域包含了圖像的標簽。相對于相信我們的記憶,我們還是應該對digits稍加探索。輸入它的名字,添加一個點號,然后按Tab鍵:digits.<TAB>,這個操作將向我們展示digits也包含了一些其他的域,比如一個名為images的域。images和data這兩個域,似乎簡單從形狀上就可以區分。


In?[3]:?print(digits.data.shape)...?????print(digits.images.shape)Out[3]:?(1797,?64)...?????(1797,?8,?8)
...?????print(digits.images.shape)
Out[3]:?(1797,?64)
...?????(1797,?8,?8)


兩種情況中,第一維對應的都是數據集中的圖像數量。然而,data中所有像素都在一個大的向量中排列,而images保留了各個圖像8×8的空間排列。


因此,如果想要繪制出一副單獨的圖像,使用images將更加合適。首先,使用NumPy的數組切片從數據集中獲取一幅圖像:


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


這里是從1797個元素的數組中獲取了它的第一行數據,這行數據對應的是8×8=64個像素。下面就可以使用plt中的imshow函數來繪制這幅圖像:


In?[5]:?plt.imshow(img,?cmap='gray')Out[5]:?<matplotlib.image.AxesImage?at?0x7efcd27f30f0>'gray')
Out[5]:?<matplotlib.image.AxesImage?at?0x7efcd27f30f0>


上面的命令得到下面的輸出:


▲數字數據集中的一個圖像樣例


此外,這里也使用cmap參數指定了一個顏色映射。默認情況下,Matplotlib 使用MATLAB默認的顏色映射jet。然而,在灰度圖像的情況下,gray顏色映射更有效。


最后,可以使用plt的subplot函數繪制全部數字的樣例。subplot函數與MATLAB中的函數一樣,需要指定行數、列數以及當前的子繪圖索引(從1開始計算)。我們將使用for 循環在數據集中迭代出前十張圖像,每張圖像都分配到一個單獨的子繪圖中。


In?[6]:?for?image_index?in?range(10):...?????????#?圖像按0開始索引,子繪圖按1開始索引...?????????subplot_index?=?image_index?+?1...?????????plt.subplot(2,?5,?subplot_index)...?????????plt.imshow(digits.images[image_index,?:,?:],?cmap='gray')for?image_index?in?range(10):
...?????????#?圖像按0開始索引,子繪圖按1開始索引
...?????????subplot_index?=?image_index?+?1
...?????????plt.subplot(2,?5,?subplot_index)
...?????????plt.imshow(digits.images[image_index,?:,?:],?cmap='gray')


這會得到下面的輸出結果:


▲數字數據集中的十幅樣例圖像


Tips:另一個擁有各種數據集資源的是我的母校——加利福尼亞大學歐文分校的機器學習倉庫:

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


關于作者:Michael Beyeler,華盛頓大學神經工程和數據科學專業的博士后,主攻仿生視覺計算模型,用以為盲人植入人工視網膜(仿生眼睛),改善盲人的視覺體驗。 他的工作屬于神經科學、計算機工程、計算機視覺和機器學習的交叉領域。同時他也是多個開源項目的積極貢獻者。?

本文摘編自機器學習:使用OpenCV和Python進行智能圖像處理,經出版方授權發布。


延伸閱讀《機器學習

點擊上圖了解及購買

轉載請聯系微信:DoctorData


推薦語:OpenCV是一個綜合了經典和先進計算機視覺、機器學習算法的開源庫。通過與Python Anaconda版本結合,你就可以獲取你所需要的所有開源計算庫。 本書首先介紹分類和回歸等統計學習的基本概念,然后詳細講解決策樹、支持向量機和貝葉斯網絡等算法,以及如何把它們與其他OpenCV函數結合。



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



更多精彩


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

查看更多優質內容!


PPT?|?報告?|?讀書?|?書單?|?干貨?

大數據?|?揭秘?|?Python?|?可視化

AI?|?人工智能?|?5G?|?區塊鏈

機器學習?|?深度學習?|?神經網絡

1024?|?段子?|?數學?|?高考


猜你想看


  • 有關華為、5G、芯片和操作系統,這些書你讀過幾本?

  • 什么是數據?數據科學家需要掌握哪些技能?終于有人講明白了

  • 你為什么選擇Python?4000名用戶提到了這些原因

  • 回顧計算機產業發展的4個階段:美國企業統治全球市場了嗎?



Q:?你在用哪些可視化工具?

歡迎留言與大家分享

覺得不錯,請把這篇文章分享給你的朋友

轉載 / 投稿請聯系:baiyu@hzbook.com

更多精彩,請在后臺點擊“歷史文章”查看

點擊閱讀原文,了解更多

總結

以上是生活随笔為你收集整理的Python实操:手把手教你用Matplotlib把数据画出来的全部內容,希望文章能夠幫你解決所遇到的問題。

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