chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python繪圖庫(kù)Matplotlib入門(mén)教程

馬哥Linux運(yùn)維 ? 來(lái)源:未知 ? 作者:李倩 ? 2018-06-26 11:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Matplotlib是一個(gè)Python語(yǔ)言的2D繪圖庫(kù),它支持各種平臺(tái),并且功能強(qiáng)大,能夠輕易繪制出各種專(zhuān)業(yè)的圖像。本文是對(duì)它的一個(gè)入門(mén)教程。

運(yùn)行環(huán)境

由于這是一個(gè)Python語(yǔ)言的軟件包,因此需要你的機(jī)器上首先安裝好Python語(yǔ)言的環(huán)境。關(guān)于這一點(diǎn),請(qǐng)自行在網(wǎng)絡(luò)上搜索獲取方法。

關(guān)于如何安裝Matplotlib請(qǐng)參見(jiàn)這里:Matplotlib Installing。

筆者推薦大家通過(guò)pip的方式進(jìn)行安裝,具體方法如下:

sudo pip3 install matplotlib

本文的代碼在如下環(huán)境中測(cè)試:

Apple OS X 10.13

Python 3.6.3

matplotlib 2.1.1

numpy 1.13.3

介紹

Matplotlib適用于各種環(huán)境,包括:

Python腳本

IPython shell

Jupyternotebook

Web應(yīng)用服務(wù)器

用戶圖形界面工具包

使用Matplotlib,能夠的輕易生成各種類(lèi)型的圖像,例如:直方圖,波譜圖,條形圖,散點(diǎn)圖等。并且,可以非常輕松的實(shí)現(xiàn)定制。

入門(mén)代碼示例

下面我們先看一個(gè)最簡(jiǎn)單的代碼示例,讓我們感受一下Matplotlib是什么樣的:

# test.pyimport matplotlib.pyplot as pltimport numpy as npdata = np.arange(100, 201)plt.plot(data)plt.show()

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

對(duì)照著這個(gè)線形圖,我們來(lái)講解一下三行代碼的邏輯:

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

通過(guò)matplotlib.pyplot將其繪制出來(lái)。很顯然,繪制出來(lái)的值對(duì)應(yīng)了圖中的縱坐標(biāo)(y軸)。而matplotlib本身為我們?cè)O(shè)置了圖形的橫坐標(biāo)(x軸):[0, 100],因?yàn)槲覀儎偤糜?00個(gè)數(shù)值

通過(guò)plt.show()將這個(gè)圖形顯示出來(lái)

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

python3 test.py

注1:后面的教程中,我們會(huì)逐步講解如何定制圖中的每一個(gè)細(xì)節(jié)。例如:坐標(biāo)軸,圖形,著色,線條樣式,等等。

注2:如果沒(méi)有必要,下文的截圖會(huì)去掉圖形外側(cè)的邊框,只保留圖形主體。

一次繪制多個(gè)圖形

有些時(shí)候,我們可能希望一次繪制多個(gè)圖形,例如:兩組數(shù)據(jù)的對(duì)比,或者一組數(shù)據(jù)的不同展示方式等。

可以通過(guò)下面的方法創(chuàng)建多個(gè)圖形:

多個(gè)figure

可以簡(jiǎn)單的理解為一個(gè)figure就是一個(gè)圖形窗口。matplotlib.pyplot會(huì)有一個(gè)默認(rèn)的figure,我們也可以通過(guò)plt.figure()創(chuàng)建更多個(gè)。如下面的代碼所示:

# figure.pyimport matplotlib.pyplot as pltimport numpy as npdata = np.arange(100, 201)plt.plot(data)data2 = np.arange(200, 301)plt.figure()plt.plot(data2)plt.show()

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

注:初始狀態(tài)這兩個(gè)窗口是完全重合的。

多個(gè)subplot

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

# subplot.pyimport matplotlib.pyplot as pltimport numpy as npdata = 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函數(shù)之外都是我們熟悉的內(nèi)容。subplot函數(shù)的前兩個(gè)參數(shù)指定了subplot數(shù)量,即:它們是以矩陣的形式來(lái)分割當(dāng)前圖形,兩個(gè)整數(shù)分別指定了矩陣的行數(shù)和列數(shù)。而第三個(gè)參數(shù)是指矩陣中的索引。

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

plt.subplot(2, 1, 1)

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

plt.subplot(2, 1, 2)

所以這段代碼的結(jié)果是這個(gè)樣子:

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

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

import matplotlib.pyplot as pltimport numpy as npdata = np.arange(100, 201)plt.subplot(211)plt.plot(data)data2 = np.arange(200, 301)plt.subplot(212)plt.plot(data2)plt.show()

subplot函數(shù)的詳細(xì)說(shuō)明參見(jiàn)這里:matplotlib.pyplot.subplot

常用圖形示例

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

本文作為第一次的入門(mén)教程,我們先來(lái)看看最常用的一些圖形的繪制。

線性圖

前面的例子中,線性圖的橫軸的點(diǎn)都是自動(dòng)生成的,而我們很可能希望主動(dòng)設(shè)置它。另外,線條我們可能也希望對(duì)其進(jìn)行定制。看一下下面這個(gè)例子:

# plot.pyimport matplotlib.pyplot as pltplt.plot([1, 2, 3], [3, 6, 9], '-r')plt.plot([1, 2, 3], [2, 4, 9], ':g')plt.show()

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

這段代碼說(shuō)明如下:

plot函數(shù)的第一個(gè)數(shù)組是橫軸的值,第二個(gè)數(shù)組是縱軸的值,所以它們一個(gè)是直線,一個(gè)是折線;

最后一個(gè)參數(shù)是由兩個(gè)字符構(gòu)成的,分別是線條的樣式和顏色。前者是紅色的直線,后者是綠色的點(diǎn)線。關(guān)于樣式和顏色的說(shuō)明請(qǐng)參見(jiàn)plot函數(shù)的API Doc:matplotlib.pyplot.plot

散點(diǎn)圖

scatter函數(shù)用來(lái)繪制散點(diǎn)圖。同樣,這個(gè)函數(shù)也需要兩組配對(duì)的數(shù)據(jù)指定x和y軸的坐標(biāo)。下面是一段代碼示例:

# scatter.pyimport matplotlib.pyplot as pltimport numpy as npN = 20plt.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()

這段代碼說(shuō)明如下:

這幅圖包含了三組數(shù)據(jù),每組數(shù)據(jù)都包含了20個(gè)隨機(jī)坐標(biāo)的位置

參數(shù)c表示點(diǎn)的顏色,s是點(diǎn)的大小,alpha是透明度

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

scatter函數(shù)的詳細(xì)說(shuō)明參見(jiàn)這里:matplotlib.pyplot.scatter

餅狀圖

pie函數(shù)用來(lái)繪制餅狀圖。餅狀圖通常用來(lái)表達(dá)集合中各個(gè)部分的百分比。

# pie.pyimport matplotlib.pyplot as pltimport numpy as nplabels = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']data = np.random.rand(7) * 100plt.pie(data, labels=labels, autopct='%1.1f%%')plt.axis('equal')plt.legend()plt.show()

這段代碼說(shuō)明如下:

data是一組包含7個(gè)數(shù)據(jù)的隨機(jī)數(shù)值

圖中的標(biāo)簽通過(guò)labels來(lái)指定

autopct指定了數(shù)值的精度格式

plt.axis('equal')設(shè)置了坐標(biāo)軸大小一致

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

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

pie函數(shù)的詳細(xì)說(shuō)明參見(jiàn)這里:matplotlib.pyplot.pie

條形圖

bar函數(shù)用來(lái)繪制條形圖。條形圖常常用來(lái)描述一組數(shù)據(jù)的對(duì)比情況,例如:一周七天,每天的城市車(chē)流量。

下面是一個(gè)代碼示例:

# bar.pyimport matplotlib.pyplot as pltimport numpy as npN = 7x = 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()

這段代碼說(shuō)明如下:

這幅圖展示了一組包含7個(gè)隨機(jī)數(shù)值的結(jié)果,每個(gè)數(shù)值是[0, 100]的隨機(jī)數(shù)

它們的顏色也是通過(guò)隨機(jī)數(shù)生成的。np.random.rand(N * 3).reshape(N, -1)表示先生成21(N x 3)個(gè)隨機(jī)數(shù),然后將它們組裝成7行,那么每行就是三個(gè)數(shù),這對(duì)應(yīng)了顏色的三個(gè)組成部分。如果不理解這行代碼,請(qǐng)先學(xué)習(xí)一下Python 機(jī)器學(xué)習(xí)庫(kù) NumPy 教程

title指定了圖形的標(biāo)題,labels指定了標(biāo)簽,alpha是透明度

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

bar函數(shù)的詳細(xì)說(shuō)明參見(jiàn)這里:matplotlib.pyplot.bar

直方圖

hist函數(shù)用來(lái)繪制直方圖。直方圖看起來(lái)是條形圖有些類(lèi)似。但它們的含義是不一樣的,直方圖描述了數(shù)據(jù)中某個(gè)范圍內(nèi)數(shù)據(jù)出現(xiàn)的頻度。這么說(shuō)有些抽象,我們通過(guò)一個(gè)代碼示例來(lái)描述就好理解了:

# hist.pyimport matplotlib.pyplot as pltimport numpy as npdata = [np.random.randint(0, n, n) for n in [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]]生成了包含了三個(gè)數(shù)組的數(shù)組,這其中:

第一個(gè)數(shù)組包含了3000個(gè)隨機(jī)數(shù),這些隨機(jī)數(shù)的范圍是 [0, 3000)

第二個(gè)數(shù)組包含了4000個(gè)隨機(jī)數(shù),這些隨機(jī)數(shù)的范圍是 [0, 4000)

第三個(gè)數(shù)組包含了5000個(gè)隨機(jī)數(shù),這些隨機(jī)數(shù)的范圍是 [0, 5000)

bins數(shù)組用來(lái)指定我們顯示的直方圖的邊界,即:[0, 100) 會(huì)有一個(gè)數(shù)據(jù)點(diǎn),[100, 500)會(huì)有一個(gè)數(shù)據(jù)點(diǎn),以此類(lèi)推。所以最終結(jié)果一共會(huì)顯示7個(gè)數(shù)據(jù)點(diǎn)。同樣的,我們指定了標(biāo)簽和圖例。

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

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

hist函數(shù)的詳細(xì)說(shuō)明參見(jiàn)這里:matplotlib.pyplot.hist

結(jié)束語(yǔ)

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 圖形
    +關(guān)注

    關(guān)注

    0

    文章

    72

    瀏覽量

    19904
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4940

    瀏覽量

    73074
  • python
    +關(guān)注

    關(guān)注

    57

    文章

    4856

    瀏覽量

    89523

原文標(biāo)題:十分鐘入門(mén) Python 繪圖庫(kù) Matplotlib 入門(mén)教程

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Python2D繪圖庫(kù)Matplotlib會(huì)用嗎?

    Matplotlib是一個(gè)Python語(yǔ)言的2D繪圖庫(kù),它支持各種平臺(tái),并且功能強(qiáng)大,能夠輕易繪制出各種專(zhuān)業(yè)的圖像。本文是對(duì)它的一個(gè)入門(mén)教程。
    的頭像 發(fā)表于 08-06 09:09 ?3596次閱讀
    <b class='flag-5'>Python</b>2D<b class='flag-5'>繪圖庫(kù)</b><b class='flag-5'>Matplotlib</b>會(huì)用嗎?

    學(xué)習(xí)Python大數(shù)據(jù)與機(jī)器學(xué)習(xí)必會(huì)Matplotlib知識(shí)

    python的培訓(xùn)學(xué)習(xí)中,我們會(huì)用python進(jìn)行數(shù)據(jù)分析的學(xué)習(xí)與應(yīng)用,并且在這一部分進(jìn)行繪圖是必不可少的,所以為了看一下大家的實(shí)力,今天我們python培訓(xùn)安排了
    發(fā)表于 07-05 17:57

    使用Python做一個(gè)眼圖的繪制庫(kù)

    本例使用了Python中的兩個(gè)繪圖庫(kù)matplotlib和pyqtgraph,對(duì)眼圖進(jìn)行了繪制,同時(shí)包含了對(duì)眼圖使用bokeh效果。
    發(fā)表于 06-12 15:18

    數(shù)據(jù)可視化之Python-matplotlib概述

    數(shù)據(jù)可視化(二):Python-matplotlib
    發(fā)表于 07-22 14:58

    python matplotlib模塊報(bào)錯(cuò)的解決方法

    pyenv下使用python matplotlib模塊的問(wèn)題解決
    發(fā)表于 10-30 09:12

    altiumdesigner17入門(mén)教程

    altiumdesigner17入門(mén)教程 制作pcb教程視頻本套altium designer視頻針對(duì)在校學(xué)生、初學(xué)者等剛剛進(jìn)行單片機(jī)開(kāi)發(fā)學(xué)習(xí)的同學(xué)進(jìn)行錄制,帶領(lǐng)學(xué)生初識(shí)Altium
    發(fā)表于 07-20 08:14

    MATLAB入門(mén)教程之基本xy平面繪圖命令

    MATLAB入門(mén)教程之基本xy平面繪圖命令
    發(fā)表于 02-18 16:57 ?7044次閱讀
    MATLAB<b class='flag-5'>入門(mén)教程</b>之基本xy平面<b class='flag-5'>繪圖</b>命令

    硬件工程師入門(mén)教程

    硬件工程師入門(mén)教程硬件工程師入門(mén)教程硬件工程師入門(mén)教程硬件工程師入門(mén)教程硬件工程師入門(mén)教程
    發(fā)表于 01-05 15:53 ?263次下載

    python爬蟲(chóng)入門(mén)教程python爬蟲(chóng)視頻教程分布式爬蟲(chóng)打造搜索引擎

    本文檔的主要內(nèi)容詳細(xì)介紹的是python爬蟲(chóng)入門(mén)教程python爬蟲(chóng)視頻教程分布式爬蟲(chóng)打造搜索引擎
    發(fā)表于 08-28 15:32 ?30次下載

    用于數(shù)據(jù)科學(xué)的python必學(xué)模塊之Matplotlib的資料說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是用于數(shù)據(jù)科學(xué)的python必學(xué)模塊之Matplotlib的資料說(shuō)明。
    發(fā)表于 09-18 08:00 ?14次下載
    用于數(shù)據(jù)科學(xué)的<b class='flag-5'>python</b>必學(xué)模塊之<b class='flag-5'>Matplotlib</b>的資料說(shuō)明

    PythonMatplotlib函數(shù)匯總

    本文檔的主要內(nèi)容詳細(xì)介紹的是PythonMatplotlib函數(shù)匯總免費(fèi)下載。
    發(fā)表于 12-17 08:00 ?2次下載

    Python經(jīng)典入門(mén)教程

    Python的經(jīng)典入門(mén)教程資料分享。
    發(fā)表于 06-01 10:25 ?127次下載

    DFRobot最新推出行空板Python系列入門(mén)教程

    近日,上海智位機(jī)器人股份有限公司(簡(jiǎn)稱(chēng)DFRobot)推出行空板Python系列入門(mén)教程,涵蓋初識(shí)行空板、小小捕光儀、多功能提醒器、模擬星空、2D迷宮和貪食蛇小游戲,詳細(xì)及案例結(jié)合的Python
    的頭像 發(fā)表于 04-29 11:35 ?2493次閱讀
    DFRobot最新推出行空板<b class='flag-5'>Python</b>系列<b class='flag-5'>入門(mén)教程</b>

    pythonmatplotlib和seaborn介紹

    的使用和分析,而數(shù)據(jù)的整合最好的方式就是使用可視化的方式將數(shù)據(jù)變現(xiàn)出來(lái)。 matplotlib和seabornde介紹 在Python中,我們可以使用matplotlib庫(kù)和seaborn庫(kù)來(lái)生成各種圖表。
    的頭像 發(fā)表于 10-07 11:16 ?1516次閱讀
    <b class='flag-5'>python</b>中<b class='flag-5'>matplotlib</b>和seaborn介紹

    Python繪圖Matplotlib快速參考手冊(cè)

    ?PYTHON
    發(fā)表于 02-07 14:04 ?0次下載