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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Matplotlib 快速入门

發(fā)布時(shí)間:2025/4/5 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Matplotlib 快速入门 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
原創(chuàng)2016-08-06Jamal Moir編程派

程派微信號(hào):codingpy


看完此文如果覺得不錯(cuò),不妨點(diǎn)擊文末廣告支持一下


昨天推出的免費(fèi)贈(zèng)書活動(dòng)還在進(jìn)行,首先感謝大家的積極參與!看了眼前五的朋友,比剛開始時(shí)的變化還是挺大的啊,昨天沒(méi)看到的朋友不要錯(cuò)過(guò)了哦。傳送門 --》?福利 | 推薦一本美亞排名第一的Python入門教材。


回到今天這篇文章,主題是 Python 庫(kù)中大名鼎鼎的繪圖圖 Matplotlib 。當(dāng)初我也是受了這個(gè)庫(kù)的吸引,開始學(xué)習(xí) Python 的。給大家看幾張用 Matplotlib 生成的圖:(首圖也是用 Matplotlib 繪制的)





本文的原作者是 Jamal Moir,是 Python 科學(xué)計(jì)算系列的第一篇文章,或許有人已經(jīng)翻譯過(guò)了,但我覺得我們 Python 翻譯組的譯文質(zhì)量還是不錯(cuò)的。希望對(duì)喜歡 Python 的各位朋友有幫助。


本文譯者 linkmyth,校對(duì) EarlGrey@編程派。linkmyth 是同濟(jì)大學(xué)的在讀碩士,主攻web開發(fā)、機(jī)器學(xué)習(xí)等方向。


以下是原文正文:




數(shù)據(jù)的處理、分析和可視化已經(jīng)成為 Python 近年來(lái)最重要的應(yīng)用之一。這種現(xiàn)象又進(jìn)一步引出“大數(shù)據(jù)”分析等類似的話題,而大數(shù)據(jù)分析在人們所能預(yù)見的諸多領(lǐng)域內(nèi)都有廣泛應(yīng)用,這其中就包含筆者個(gè)人感興趣的機(jī)器學(xué)習(xí)。

Python 在處理數(shù)據(jù)、分析數(shù)據(jù)以及數(shù)據(jù)可視化方面擁有很多功能強(qiáng)大的工具,這也是 Python 在科學(xué)領(lǐng)域中能夠迅速發(fā)展的一個(gè)主要原因。

在接下來(lái)的一系列文章中,我們將介紹 Python 科學(xué)計(jì)算中涉及的主要的庫(kù),并且學(xué)習(xí)如何使用它們處理數(shù)據(jù)以滿足我們的需求。但是我們并非只是停留在快速寫出模板代碼來(lái)使用這些庫(kù)的層面上,我們還會(huì)了解這些庫(kù)背后的數(shù)學(xué)知識(shí),以幫助我們更好地理解庫(kù)的運(yùn)行原理。

首先,我們將從一個(gè)功能非常強(qiáng)大的庫(kù) Matplotlib 開始介紹,在后面的文章中也會(huì)一直用到這個(gè)庫(kù)。

什么是 Matplotlib?

簡(jiǎn)單來(lái)說(shuō),Matplotlib 是 Python 的一個(gè)繪圖庫(kù)。它包含了大量的工具,你可以使用這些工具創(chuàng)建各種圖形,包括簡(jiǎn)單的散點(diǎn)圖,正弦曲線,甚至是三維圖形。Python 科學(xué)計(jì)算社區(qū)經(jīng)常使用它完成數(shù)據(jù)可視化的工作。

你可以在他們的網(wǎng)站上了解到更多 Matplotlib 背后的設(shè)計(jì)思想,但是我強(qiáng)烈建議你先瀏覽一下他們的圖庫(kù),體會(huì)一下這個(gè)庫(kù)的各種神奇功能。

畫一個(gè)簡(jiǎn)單的圖形

首先我們要畫一條在 [0, 2pi] 上的正弦曲線。讀者應(yīng)該會(huì)注意到我們?cè)谶@里使用了 Numpy 庫(kù),但是即便你沒(méi)有使用過(guò)這個(gè)庫(kù)也不用擔(dān)心,在后面的文章中我們也會(huì)介紹到 Numpy 庫(kù)。

import matplotlib.pyplot as plt
import numpy as np

以上這些就是我們將要用到的導(dǎo)入模塊。在我的上一篇文章(以及另一篇文章)中都提到過(guò)?from x import *?是一種糟糕的導(dǎo)入方式。我們不想在程序里重復(fù)書寫?matplotlib.pyplot?和?numpy,這種書寫方式過(guò)于冗長(zhǎng),因此我們采用了上面的折中寫法。

# 簡(jiǎn)單的繪圖

x = np.linspace(0, 2 * np.pi, 50) plt.plot(x, np.sin(x))
# 如果沒(méi)有第一個(gè)參數(shù) x,圖形的 x 坐標(biāo)默認(rèn)為數(shù)組的索引

plt.show() # 顯示圖形

上面的代碼將畫出一個(gè)簡(jiǎn)單的正弦曲線。np.linspace(0, 2 * np.pi, 50)?這段代碼將會(huì)生成一個(gè)包含 50 個(gè)元素的數(shù)組,這 50 個(gè)元素均勻的分布在 [0, 2pi] 的區(qū)間上。

plot?命令以一種簡(jiǎn)潔優(yōu)雅的方式創(chuàng)建了圖形。提醒一下,如果沒(méi)有第一個(gè)參數(shù) x,圖形的 x 軸坐標(biāo)將不再是 0 到 2pi,而應(yīng)該是數(shù)組的索引范圍。

最后一行代碼?`plt.show()?將圖形顯示出來(lái),如果沒(méi)有這行代碼圖像就不會(huì)顯示。

運(yùn)行代碼后應(yīng)該會(huì)類似得到下面的圖形:

在一張圖上繪制兩個(gè)數(shù)據(jù)集

大多數(shù)時(shí)候讀者可能更想在一張圖上繪制多個(gè)數(shù)據(jù)集。用 Matplotlib 也可以輕松實(shí)現(xiàn)這一點(diǎn)。

x = np.linspace(0, 2 * np.pi, 50) plt.plot(x, np.sin(x),x, np.sin(2 * x)) plt.show()

上面的代碼同時(shí)繪制了表示函數(shù) sin(x) 和 sin(2x) 的圖形。這段代碼和前面繪制一個(gè)數(shù)據(jù)集的代碼幾乎完全相同,只有一點(diǎn)例外,這段代碼在調(diào)用?plt.plot()?的時(shí)候多傳入了一個(gè)數(shù)據(jù)集,并用逗號(hào)與第一個(gè)數(shù)據(jù)集分隔開。

最后你會(huì)得到類似于下面包含兩條曲線的圖形:

自定義圖形的外觀

當(dāng)在同一個(gè)圖形上展示多個(gè)數(shù)據(jù)集時(shí),通過(guò)改變線條的外觀來(lái)區(qū)分不同的數(shù)據(jù)集變得非常必要。

# 自定義曲線的外觀

x = np.linspace(0, 2 * np.pi, 50) plt.plot(x, np.sin(x), 'r-o',x, np.cos(x), 'g--') plt.show()

上述代碼展示了兩種不同的曲線樣式:'r-o'?和?'g--'。字母 ‘r’ 和 ‘g’ 代表線條的顏色,后面的符號(hào)代表線和點(diǎn)標(biāo)記的類型。例如?'-o'?代表包含實(shí)心點(diǎn)標(biāo)記的實(shí)線,'--'?代表虛線。其他的參數(shù)需要讀者自己去嘗試,這也是學(xué)習(xí) Matplotlib 最好的方式。

顏色:
藍(lán)色 - ‘b’
綠色 - ‘g’
紅色 - ‘r’
青色 - ‘c’
品紅 - ‘m’
黃色 - ‘y’
黑色 - ‘k’(’b’代表藍(lán)色,所以這里用黑色的最后一個(gè)字母)
白色 - ‘w’

線:
直線 - ‘-‘
虛線 - ‘—‘
點(diǎn)線 - ‘:’
點(diǎn)劃線 - ‘-.’

常用點(diǎn)標(biāo)記
點(diǎn) - ‘.’
像素 - ‘,’
圓 - ‘o’
方形 - ‘s’
三角形 - ‘^’
更多點(diǎn)標(biāo)記樣式點(diǎn)擊
這里

最后你會(huì)得到類似下面的圖形:

使用子圖

使用子圖可以在一個(gè)窗口繪制多張圖。

# 使用子圖

x = np.linspace(0, 2 * np.pi, 50) plt.subplot(2, 1, 1) # (行,列,活躍區(qū))

plt.plot(x, np.sin(x), 'r') plt.subplot(2, 1, 2) plt.plot(x, np.cos(x), 'g') plt.show()

使用子圖只需要一個(gè)額外的步驟,就可以像前面的例子一樣繪制數(shù)據(jù)集。即在調(diào)用?plot()?函數(shù)之前需要先調(diào)用?subplot()?函數(shù)。該函數(shù)的第一個(gè)參數(shù)代表子圖的總行數(shù),第二個(gè)參數(shù)代表子圖的總列數(shù),第三個(gè)參數(shù)代表活躍區(qū)域。

活躍區(qū)域代表當(dāng)前子圖所在繪圖區(qū)域,繪圖區(qū)域是按從左至右,從上至下的順序編號(hào)。例如在 4×4 的方格上,活躍區(qū)域 6 在方格上的坐標(biāo)為 (2, 2)。

最終你會(huì)得到類似下面的圖形:

簡(jiǎn)單的散點(diǎn)圖

散點(diǎn)圖是一堆離散點(diǎn)的集合。用 Matplotlib 畫散點(diǎn)圖也同樣非常簡(jiǎn)單。

# 簡(jiǎn)單的散點(diǎn)圖

x = np.linspace(0, 2 * np.pi, 50) y = np.sin(x) plt.scatter(x,y) plt.show()

正如上面代碼所示,你只需要調(diào)用?scatter()?函數(shù)并傳入兩個(gè)分別代表 x 坐標(biāo)和 y 坐標(biāo)的數(shù)組。注意,我們通過(guò)?plot?命令并將線的樣式設(shè)置為?'bo'?也可以實(shí)現(xiàn)同樣的效果。

最后你會(huì)得到類似下面的無(wú)線圖形:

彩色映射散點(diǎn)圖

另一種你可能用到的圖形是彩色映射散點(diǎn)圖。這里我們會(huì)根據(jù)數(shù)據(jù)的大小給每個(gè)點(diǎn)賦予不同的顏色和大小,并在圖中添加一個(gè)顏色欄。

# 彩色映射散點(diǎn)圖

x = np.random.rand(1000) y = np.random.rand(1000) size = np.random.rand(1000) * 50

colour = np.random.rand(1000) plt.scatter(x, y, size, colour) plt.colorbar() plt.show()

上面的代碼大量的用到了?np.random.rand(1000),原因是我們繪圖的數(shù)據(jù)都是隨機(jī)產(chǎn)生的。

同前面一樣我們用到了?scatter()?函數(shù),但是這次我們傳入了另外的兩個(gè)參數(shù),分別為所繪點(diǎn)的大小和顏色。通過(guò)這種方式使得圖上點(diǎn)的大小和顏色根據(jù)數(shù)據(jù)的大小產(chǎn)生變化。

然后我們用?colorbar()?函數(shù)添加了一個(gè)顏色欄。

最后你會(huì)得到類似于下面的彩色散點(diǎn)圖:

直方圖

直方圖是另一種常見的圖形,也可以通過(guò)幾行代碼創(chuàng)建出來(lái)。

# 直方圖

x = np.random.randn(1000) plt.hist(x, 50) plt.show()

直方圖是 Matplotlib 中最簡(jiǎn)單的圖形之一。你只需要給?hist()?函數(shù)傳入一個(gè)包含數(shù)據(jù)的數(shù)組。第二個(gè)參數(shù)代表數(shù)據(jù)容器的個(gè)數(shù)。數(shù)據(jù)容器代表不同的值的間隔,并用來(lái)包含我們的數(shù)據(jù)。數(shù)據(jù)容器越多,圖形上的數(shù)據(jù)條就越多。

最終你會(huì)得到類似下面的直方圖:

標(biāo)題,標(biāo)簽和圖例

當(dāng)需要快速創(chuàng)建圖形時(shí),你可能不需要為圖形添加標(biāo)簽。但是當(dāng)構(gòu)建需要展示的圖形時(shí),你就需要添加標(biāo)題,標(biāo)簽和圖例。

# 添加標(biāo)題,坐標(biāo)軸標(biāo)記和圖例

x = np.linspace(0, 2 * np.pi, 50) plt.plot(x, np.sin(x), 'r-x', label='Sin(x)') plt.plot(x, np.cos(x), 'g-^', label='Cos(x)') plt.legend() # 展示圖例

plt.xlabel('Rads') # 給 x 軸添加標(biāo)簽

plt.ylabel('Amplitude') # 給 y 軸添加標(biāo)簽

plt.title('Sin and Cos Waves') # 添加圖形標(biāo)題

plt.show()

為了給圖形添加圖例,我們需要在?plot()?函數(shù)中添加命名參數(shù)?'label'?并賦予該參數(shù)相應(yīng)的標(biāo)簽。然后調(diào)用?legend()?函數(shù)就會(huì)在我們的圖形中添加圖例。

接下來(lái)我們只需要調(diào)用函數(shù)?title()xlabel()?和?ylabel()?就可以為圖形添加標(biāo)題和標(biāo)簽。

你會(huì)得到類似于下面這張擁有標(biāo)題、標(biāo)簽和圖例的圖形:

以上內(nèi)容應(yīng)該足夠幫助讀者開始使用 Matplotlib 和 Python 實(shí)現(xiàn)數(shù)據(jù)可視化,但是這些內(nèi)容并不全面。我強(qiáng)烈建議讀者親自嘗試使用這個(gè)工具,筆者也是通過(guò)這種方式掌握了這個(gè)工具。畫一些圖形,改變樣式并使用子圖功能,然后你就會(huì)很快掌握 Matplotlib 的使用方式。

這是一篇是關(guān)于如何使用 Matplotlib 和 Python 完成數(shù)據(jù)可視化的文章,也是 Python 科學(xué)計(jì)算系列文章中的第一篇。我希望讀者能從中有所收獲,并且對(duì) Matplotlib 庫(kù)更加熟悉。

不要忘記分享和關(guān)注

請(qǐng)記得分享這篇文章讓更多的人看到它!另外,記得訂閱這個(gè)博客的郵件列表,關(guān)注我的Twitter并在Google+上添加我,這樣你就不會(huì)錯(cuò)過(guò)任何有價(jià)值的文章!

我會(huì)閱讀所有的評(píng)論,所以無(wú)論你有什么想要說(shuō)的,或者是想要分享的,甚至是問(wèn)題之類的,都可以在下面留言。

歡迎轉(zhuǎn)發(fā)至朋友圈。如無(wú)特殊注明,本公號(hào)所發(fā)文章均為原創(chuàng)或編譯,如需轉(zhuǎn)載,請(qǐng)聯(lián)系「編程派」獲得授權(quán)。


加群交流 Python 技術(shù)問(wèn)題,請(qǐng)先閱讀群規(guī)(點(diǎn)擊藍(lán)色字體),然后加編程派主頁(yè)君為好友并說(shuō)明愿意遵守群規(guī)。


【近期優(yōu)秀教程推薦】

踐行這5條原則,構(gòu)建優(yōu)秀的Python包

好用!在 Notebook 中使用 Sublime Text 快捷鍵

如何測(cè)試代碼覆蓋率:coverage.py 簡(jiǎn)介

Jupyter Notebook 快速入門(上)

Jupyter Notebook 快速入門(下)

掃碼關(guān)注編程派,獲取最新教程及資源推送


↓↓↓ 點(diǎn)擊閱讀原文,查看更多Python教程?

↓↓↓ 另外,歡迎點(diǎn)擊廣告,你的每次點(diǎn)擊都會(huì)成為以后的活動(dòng)福利基金

總結(jié)

以上是生活随笔為你收集整理的Matplotlib 快速入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久99久久99精品中文字幕 | 午夜久久影院 | 日本视频在线看 | 亚洲图片一区二区 | 免费看亚洲 | 婷婷调教口舌奴ⅴk | 欧美三级小说 | 日韩精品1| 窝窝视频在线 | 欧美黄色成人 | 69黄色片 | 一区在线免费观看 | 国产网红主播精品av | 青青草原综合久久大伊人精品 | 欧美在线你懂的 | 777久久 | 高潮毛片无遮挡高清免费 | 日韩欧美精品在线观看 | 色婷婷久久五月综合成人 | av免费观看入口 | 欧美综合自拍 | 美国爱爱视频 | 性欢交69精品久久久 | 麻豆疯狂做受xxxx高潮视频 | 中文字幕不卡在线播放 | 波多野结衣女同 | 999久久久免费精品国产 | 女人扒开屁股让我添 | 日本一二三区在线视频 | 国产精品福利一区二区 | 污片免费在线观看 | 亚洲精品在线中文字幕 | av网站大全免费 | 色男人网| 丰满大乳露双乳呻吟 | 久久久久人妻精品色欧美 | 国产美女视频一区二区 | 午夜高清福利 | 爱的天堂 | 日本中文字幕精品 | 天天插天天操天天干 | 色噜噜在线| 久久亚洲婷婷 | 日韩一区免费观看 | 99在线国产 | 欧美日韩视频 | 国内一级视频 | 久久九九国产精品 | 99极品视频| 黄色理论片 | 99中文字幕在线观看 | 熟女人妻一区二区三区免费看 | 性爱一级视频 | 人操人爽| 亚洲一级黄色 | 制服丝袜亚洲 | 视频在线观看一区二区 | 欧美体内谢she精2性欧美 | 国产黄色av | 免费se99se| 精品人妻一区二区三区潮喷在线 | 久久精品99国产精品日本 | 免费黄色美女网站 | 国产高潮失禁喷水爽到抽搐 | 欧美人体做爰大胆视频 | 精品视频在线观看一区二区 | 91黄色免费视频 | 国产麻豆交换夫妇 | 麻豆精品国产传媒 | 成年视频在线观看 | 少妇4p| www.夜夜 | 亚洲精品国产无码 | 亚洲男人天堂 | 国产一区二区综合 | 欧美一区二区三区视频 | 黑帮大佬和我的365日第二部 | 亚欧精品在线观看 | 欧美成人手机在线视频 | 99国产免费| 美脚の诱脚舐め脚视频播放 | 日本人极品人妖高潮 | 在线观看三级视频 | 男女啪啪十八 | 欧美国产日本在线 | 久久嫩草精品久久久久 | 国产成人无码精品久久久久 | 国产福利午夜 | 女同一区| 麻豆91视频 | 黑人精品xxx一区一二区 | 丰满肉肉bbwwbbww| 98久久久 | 91视频论坛 | 日韩精品在线免费观看视频 | 久久视精品 | 无码精品一区二区免费 | 少妇高潮灌满白浆毛片免费看 | 五月天开心激情 |