色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Python2D繪圖庫Matplotlib會用嗎?

馬哥Linux運維 ? 來源:未知 ? 作者:胡薇 ? 2018-08-06 09:09 ? 次閱讀

Matplotlib是一個Python語言的2D繪圖庫,它支持各種平臺,并且功能強大,能夠輕易繪制出各種專業的圖像。本文是對它的一個入門教程

運行環境

由于這是一個Python語言的軟件包,因此需要你的機器上首先安裝好Python語言的環境。關于這一點,請自行在網絡上搜索獲取方法。

關于如何安裝Matplotlib請參見這里:Matplotlib Installing。

筆者推薦大家通過pip的方式進行安裝,具體方法如下:

sudo pip3 installmatplotlib

本文的代碼在如下環境中測試:

Apple OS X 10.13

Python 3.6.3

matplotlib 2.1.1

numpy 1.13.3

介紹

Matplotlib適用于各種環境,包括:

Python腳本

IPython shell

Jupyternotebook

Web應用服務器

用戶圖形界面工具包

使用Matplotlib,能夠的輕易生成各種類型的圖像,例如:直方圖,波譜圖,條形圖,散點圖等。并且,可以非常輕松的實現定制。

入門代碼示例

下面我們先看一個最簡單的代碼示例,讓我們感受一下Matplotlib是什么樣的:

# test.py

importmatplotlib.pyplotasplt

import numpyasnp

data=np.arange(100,201)

plt.plot(data)

plt.show()

這段代碼的主體邏輯只有三行,但是它卻繪制出了一個非常直觀的線性圖,如下所示:

對照著這個線形圖,我們來講解一下三行代碼的邏輯:

通過np.arange(100, 201)生成一個[100, 200]之間的整數數組,它的值是:[100, 101, 102, … , 200]

通過matplotlib.pyplot將其繪制出來。很顯然,繪制出來的值對應了圖中的縱坐標(y軸)。而matplotlib本身為我們設置了圖形的橫坐標(x軸):[0, 100],因為我們剛好有100個數值

通過plt.show()將這個圖形顯示出來

這段代碼非常的簡單,運行起來也是一樣。如果你已經有了本文的運行環境,將上面的代碼保存到一個文本文件中(或者通過Github獲取本文的源碼),然后通過下面的命令就可以在你自己的電腦上看到上面的圖形了:

python3test.py

注1:后面的教程中,我們會逐步講解如何定制圖中的每一個細節。例如:坐標軸,圖形,著色,線條樣式,等等。

注2:如果沒有必要,下文的截圖會去掉圖形外側的邊框,只保留圖形主體。

一次繪制多個圖形

有些時候,我們可能希望一次繪制多個圖形,例如:兩組數據的對比,或者一組數據的不同展示方式等。

可以通過下面的方法創建多個圖形:

多個figure

可以簡單的理解為一個figure就是一個圖形窗口。matplotlib.pyplot會有一個默認的figure,我們也可以通過plt.figure()創建更多個。如下面的代碼所示:

# figure.py

importmatplotlib.pyplotasplt

import numpyasnp

data=np.arange(100,201)

plt.plot(data)

data2=np.arange(200,301)

plt.figure()

plt.plot(data2)

plt.show()

這段代碼繪制了兩個窗口的圖形,它們各自是一個不同區間的線形圖,如下所示:

注:初始狀態這兩個窗口是完全重合的。

多個subplot

有些情況下,我們是希望在同一個窗口顯示多個圖形。此時就這可以用多個subplot。下面是一段代碼示例:

# subplot.py

importmatplotlib.pyplotasplt

import numpyasnp

data=np.arange(100,201)

plt.subplot(2,1,1)

plt.plot(data)

data2=np.arange(200,301)

plt.subplot(2,1,2)

plt.plot(data2)

plt.show()

這段代碼中,除了subplot函數之外都是我們熟悉的內容。subplot函數的前兩個參數指定了subplot數量,即:它們是以矩陣的形式來分割當前圖形,兩個整數分別指定了矩陣的行數和列數。而第三個參數是指矩陣中的索引

因此,下面這行代碼指的是:2行1列subplot中的第1個subplot。

plt.subplot(2,1,1)

下面這行代碼指的是:2行1列subplot中的第2個subplot。

plt.subplot(2,1,2)

所以這段代碼的結果是這個樣子:

subplot函數的參數不僅僅支持上面這種形式,還可以將三個整數(10之內的)合并一個整數。例如:2, 1, 1可以寫成211,2, 1, 2可以寫成212。

因此,下面這段代碼的結果是一樣的:

importmatplotlib.pyplotasplt

import numpyasnp

data=np.arange(100,201)

plt.subplot(211)

plt.plot(data)

data2=np.arange(200,301)

plt.subplot(212)

plt.plot(data2)

plt.show()

subplot函數的詳細說明參見這里:matplotlib.pyplot.subplot

常用圖形示例

Matplotlib可以生成非常多的圖形式樣,多到令人驚嘆的地步。大家可以在這里:Matplotlib Gallery感受一下。

本文作為第一次的入門教程,我們先來看看最常用的一些圖形的繪制。

線性圖

前面的例子中,線性圖的橫軸的點都是自動生成的,而我們很可能希望主動設置它。另外,線條我們可能也希望對其進行定制。看一下下面這個例子:

# plot.py

importmatplotlib.pyplotasplt

plt.plot([1,2,3],[3,6,9],'-r')

plt.plot([1,2,3],[2,4,9],':g')

plt.show()

這段代碼可以讓我們得到這樣的圖形:

這段代碼說明如下:

plot函數的第一個數組是橫軸的值,第二個數組是縱軸的值,所以它們一個是直線,一個是折線;

最后一個參數是由兩個字符構成的,分別是線條的樣式和顏色。前者是紅色的直線,后者是綠色的點線。關于樣式和顏色的說明請參見plot函數的API Doc:matplotlib.pyplot.plot

散點圖

scatter函數用來繪制散點圖。同樣,這個函數也需要兩組配對的數據指定x和y軸的坐標。下面是一段代碼示例:

# scatter.py

importmatplotlib.pyplotasplt

import numpyasnp

N=20

plt.scatter(np.random.rand(N)*100,

np.random.rand(N)*100,

c='r',s=100,alpha=0.5)

plt.scatter(np.random.rand(N)*100,

np.random.rand(N)*100,

c='g',s=200,alpha=0.5)

plt.scatter(np.random.rand(N)*100,

np.random.rand(N)*100,

c='b',s=300,alpha=0.5)

plt.show()

這段代碼說明如下:

這幅圖包含了三組數據,每組數據都包含了20個隨機坐標的位置

參數c表示點的顏色,s是點的大小,alpha是透明度

這段代碼繪制的圖形如下所示:

scatter函數的詳細說明參見這里:matplotlib.pyplot.scatter

餅狀圖

pie函數用來繪制餅狀圖。餅狀圖通常用來表達集合中各個部分的百分比。

# pie.py

importmatplotlib.pyplotasplt

import numpyasnp

labels=['Mon','Tue','Wed','Thu','Fri','Sat','Sun']

data=np.random.rand(7)*100

plt.pie(data,labels=labels,autopct='%1.1f%%')

plt.axis('equal')

plt.legend()

plt.show()

這段代碼說明如下:

data是一組包含7個數據的隨機數值

圖中的標簽通過labels來指定

autopct指定了數值的精度格式

plt.axis('equal')設置了坐標軸大小一致

plt.legend()指明要繪制圖例(見下圖的右上角)

這段代碼輸出的圖形如下所示:

pie函數的詳細說明參見這里:matplotlib.pyplot.pie

條形圖

bar函數用來繪制條形圖。條形圖常常用來描述一組數據的對比情況,例如:一周七天,每天的城市車流量。

下面是一個代碼示例:

# bar.py

importmatplotlib.pyplotasplt

import numpyasnp

N=7

x=np.arange(N)

data=np.random.randint(low=0,high=100,size=N)

colors=np.random.rand(N *3).reshape(N,-1)

labels=['Mon','Tue','Wed','Thu','Fri','Sat','Sun']

plt.title("Weekday Data")

plt.bar(x,data,alpha=0.8,color=colors,tick_label=labels)

plt.show()

這段代碼說明如下:

這幅圖展示了一組包含7個隨機數值的結果,每個數值是[0, 100]的隨機數

它們的顏色也是通過隨機數生成的。np.random.rand(N * 3).reshape(N, -1)表示先生成21(N x 3)個隨機數,然后將它們組裝成7行,那么每行就是三個數,這對應了顏色的三個組成部分。如果不理解這行代碼,請先學習一下Python 機器學習庫 NumPy 教程

title指定了圖形的標題,labels指定了標簽,alpha是透明度

這段代碼輸出的圖形如下所示:

bar函數的詳細說明參見這里:matplotlib.pyplot.bar

直方圖

hist函數用來繪制直方圖。直方圖看起來是條形圖有些類似。但它們的含義是不一樣的,直方圖描述了數據中某個范圍內數據出現的頻度。這么說有些抽象,我們通過一個代碼示例來描述就好理解了:

# hist.py

importmatplotlib.pyplotasplt

import numpyasnp

data=[np.random.randint(0,n,n)fornin[3000,4000,5000]]

labels=['3K','4K','5K']

bins=[0,100,500,1000,2000,3000,4000,5000]

plt.hist(data,bins=bins,label=labels)

plt.legend()

plt.show()

上面這段代碼中,[np.random.randint(0, n, n) for n in [3000, 4000, 5000]]生成了包含了三個數組的數組,這其中:

第一個數組包含了3000個隨機數,這些隨機數的范圍是 [0, 3000)

第二個數組包含了4000個隨機數,這些隨機數的范圍是 [0, 4000)

第三個數組包含了5000個隨機數,這些隨機數的范圍是 [0, 5000)

bins數組用來指定我們顯示的直方圖的邊界,即:[0, 100) 會有一個數據點,[100, 500)會有一個數據點,以此類推。所以最終結果一共會顯示7個數據點。同樣的,我們指定了標簽和圖例。

這段代碼的輸出如下圖所示:

在這幅圖中,我們看到,三組數據在3000以下都有數據,并且頻度是差不多的。但藍色條只有3000以下的數據,橙色條只有4000以下的數據。這與我們的隨機數組數據剛好吻合。

hist函數的詳細說明參見這里:matplotlib.pyplot.hist

結束語

通過本文,我們已經知道了Matplotlib的大致使用方法和幾種最基本的圖形的繪制方式。

需要說明的是,由于是入門教程,因此本文中我們只給出了這些函數和圖形最基本的使用方法。但實際上,它們的功能遠不止這么簡單。因此本文中我們貼出了這些函數的API地址以便讀者進一步的研究。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • python
    +關注

    關注

    56

    文章

    4798

    瀏覽量

    84810

原文標題:Python 繪圖庫 Matplotlib 入門教程

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    學習Python大數據與機器學習必會Matplotlib知識

    python的培訓學習中,我們會用python進行數據分析的學習與應用,并且在這一部分進行繪圖是必不可少的,所以為了看一下大家的實力,今天我們py
    發表于 07-05 17:57

    matplotlib繪圖中編寫的輔助函數總結

    matplotlib做圖中常用的輔助函數
    發表于 05-17 17:12

    使用Python做一個眼圖的繪制庫

    本例使用了Python中的兩個繪圖庫matplotlib和pyqtgraph,對眼圖進行了繪制,同時包含了對眼圖使用bokeh效果。
    發表于 06-12 15:18

    數據可視化之Python-matplotlib概述

    數據可視化(二):Python-matplotlib
    發表于 07-22 14:58

    python matplotlib模塊報錯的解決方法

    pyenv下使用python matplotlib模塊的問題解決
    發表于 10-30 09:12

    TensorFlow常用Python擴展包

    時,如果尚未安裝 Numpy,它將被自動安裝。Matplolib:這是 Python 2D 繪圖庫。使用它可以只用幾行代碼創建各類圖,包括直方、條形圖、錯誤圖、散點圖和功率譜等。它可以使用 pip 進行
    發表于 07-28 14:35

    電動機效率 matlab,【原創】matplotlib繪制電機效率MAP圖 精選資料分享

    matplotlib簡介matplotlibPython的第三方工具包,顧名思義它是一個關于矩陣及繪圖的開發包,里面豐富的函數以及類似MATLAB的函數可以讓我們很快繪制一幅圖像(F
    發表于 09-01 06:31

    Python繪圖庫Matplotlib入門教程

    這段代碼中,除了subplot函數之外都是我們熟悉的內容。subplot函數的前兩個參數指定了subplot數量,即:它們是以矩陣的形式來分割當前圖形,兩個整數分別指定了矩陣的行數和列數。而第三個參數是指矩陣中的索引。
    的頭像 發表于 06-26 11:53 ?4910次閱讀
    <b class='flag-5'>Python</b><b class='flag-5'>繪圖庫</b><b class='flag-5'>Matplotlib</b>入門教程

    用于數據科學的python必學模塊之Matplotlib的資料說明

    本文檔的主要內容詳細介紹的是用于數據科學的python必學模塊之Matplotlib的資料說明。
    發表于 09-18 08:00 ?14次下載
    用于數據科學的<b class='flag-5'>python</b>必學模塊之<b class='flag-5'>Matplotlib</b>的資料說明

    PythonMatplotlib函數匯總

    本文檔的主要內容詳細介紹的是PythonMatplotlib函數匯總免費下載。
    發表于 12-17 08:00 ?2次下載

    使用Python進行Arduino實時繪圖

    電子發燒友網站提供《使用Python進行Arduino實時繪圖.zip》資料免費下載
    發表于 11-08 11:59 ?1次下載
    使用<b class='flag-5'>Python</b>進行Arduino實時<b class='flag-5'>繪圖</b>

    功能強大的開源Python繪圖庫

    我之前一直守著 matplotlib 用的原因,就是為了我學會它復雜的語法,已經“沉沒"在里面的幾百個小時的時間成本。這也導致我花費了不知多少個深夜,在 StackOverflow 上搜索如何“格式化日期”或“增加第二個Y軸”。
    的頭像 發表于 11-17 15:05 ?668次閱讀

    使用Python來收集、處理和可視化人口數據

    數據分析和可視化: pandas:一個提供高性能、易用的數據結構和數據分析工具的庫。 requests:一個簡潔、優雅的HTTP庫,用于發送網絡請求和獲取數據。 matplotlib:一個強大的繪圖庫,支持多種圖形和樣式。 seaborn:一個基于
    的頭像 發表于 06-21 17:08 ?1425次閱讀
    使用<b class='flag-5'>Python</b>來收集、處理和可視化人口數據

    分享10個適用于多個學科的Python數據可視化庫

    matplotlibPython可視化程序庫的泰斗。經過十幾年它任然是Python使用者最常用的畫圖庫。它的設計和在1980年代被設計的商業化程序語言MATLAB非常接近。
    的頭像 發表于 08-14 10:40 ?809次閱讀
    分享10個適用于多個學科的<b class='flag-5'>Python</b>數據可視化庫

    pythonmatplotlib和seaborn介紹

    的使用和分析,而數據的整合最好的方式就是使用可視化的方式將數據變現出來。 matplotlib和seabornde介紹 在Python中,我們可以使用matplotlib庫和seaborn庫來生成各種圖表。
    的頭像 發表于 10-07 11:16 ?1029次閱讀
    <b class='flag-5'>python</b>中<b class='flag-5'>matplotlib</b>和seaborn介紹
    主站蜘蛛池模板: 91视频3p| 美女扒开尿口让男生添动态图| 任你躁国语自产二区在线播放| 37大但人文艺术A级都市天气| 久久这里只有精品国产99| 入禽太深免费视频10| 伊人久久影院| 国产精品免费一区二区区| 麻豆精品传媒一二三区| 性一交一乱一色一视频| 成人免费无毒在线观看网站| 果冻传媒视频在线观看完整版免费 | 亚洲人成电影网站色2017| 国产特级毛片AAAAAAA高清| 夜夜穞狠狠穞| 日本成熟bbxxxxxxxx| 黑人强伦姧人妻日韩那庞大的 | 韩国黄色影院| 3DNagoonimation动漫| 视频一区精品自拍亚洲| 久久AV国产麻豆HD真实乱| 顶级少妇AAAAABBBBB片| 亚洲欧美成人在线| 披黑人猛躁10次高潮| 久久精品成人免费网站| 国产精品www视频免费看| 9久久免费国产精品特黄| 亚洲AV精品无码成人| 人妻兽虐曲| 免费黄色网址在线观看| 国产一区二区三区影院 | 国产欧美一区二区精品久久久| 中文字幕偷乱免费视频在线| 我们中文在线观看免费完整版| 强上轮流内射高NP男男| 男人插曲视频大全免费网站| 红桃传媒少妇人妻网站无码抽插| 超碰97 总站 中文字幕| np高h肉辣一女多男| 69久久国产精品热88人妻| 中文字幕视频免费在线观看|