使用matplotlib在Python中繪制數(shù)據(jù)的詳細(xì)教程
簡(jiǎn)介
Python 在處理數(shù)據(jù)方面非常出色。通常,數(shù)據(jù)集·會(huì)包括多個(gè)變量和許多實(shí)例,這使得很難理解數(shù)據(jù)的情況。數(shù)據(jù)可視化是幫助您識(shí)別數(shù)據(jù)模式的一種有用方式。
例如,假設(shè)您是一名房地產(chǎn)經(jīng)紀(jì)人,您想要了解房屋的年齡與售價(jià)之間的關(guān)系。如果您的數(shù)據(jù)包括 5 棟房屋的數(shù)據(jù),那么理解情況就不會(huì)太困難。但是,假設(shè)您想要使用整個(gè)鎮(zhèn)上 500 棟房屋的數(shù)據(jù),那么理解年齡如何影響價(jià)格就會(huì)變得非常困難。通過(guò)繪制售價(jià)與年齡的關(guān)系,對(duì)數(shù)據(jù)進(jìn)行可視化肯定會(huì)闡明這兩者之間的關(guān)系。
可視化是以一種通用方式快速傳達(dá)概念的方法,特別是對(duì)于那些不熟悉您數(shù)據(jù)的人。每當(dāng)我們處理數(shù)據(jù)時(shí),可視化通常是分析的必要部分。
我們將使用 2D 繪圖庫(kù) matplotlib,最初由 John D. Hunter 編寫,自那以后已成為一個(gè)非?;钴S的開(kāi)源開(kāi)發(fā)社區(qū)項(xiàng)目。它允許您生成高質(zhì)量的折線圖、散點(diǎn)圖、直方圖、條形圖等。每個(gè)圖以不同的方式呈現(xiàn)數(shù)據(jù),通常在確定數(shù)據(jù)的最具信息量的圖之前,嘗試不同類型的圖表是很有用的。要記住,可視化是藝術(shù)和科學(xué)的結(jié)合。
鑒于可視化的重要性,本教程將描述如何使用 matplotlib 在 Python 中繪制數(shù)據(jù)。我們將介紹如何使用一小組數(shù)據(jù)生成散點(diǎn)圖,向圖表添加標(biāo)題和圖例,并通過(guò)更改繪圖點(diǎn)的外觀來(lái)自定義圖表。
完成本教程后,您將能夠在 Python 中繪制數(shù)據(jù)!
先決條件
在進(jìn)行本教程之前,您應(yīng)該已經(jīng)安裝了 Python 3,并在計(jì)算機(jī)上設(shè)置了本地編程環(huán)境。如果不是這種情況,您可以按照適用于您操作系統(tǒng)的相應(yīng)安裝和設(shè)置指南進(jìn)行設(shè)置。
步驟 1 — 導(dǎo)入 matplotlib
在我們開(kāi)始在 Python 中工作之前,讓我們?cè)俅螜z查 matplotlib 模塊是否已安裝。在命令行中,通過(guò)運(yùn)行以下命令檢查 matplotlib 是否已安裝:
python -c "import matplotlib"
如果 matplotlib 已安裝,此命令將順利完成,我們可以開(kāi)始了。如果沒(méi)有安裝,您將收到錯(cuò)誤消息:
Traceback (most recent call last): File "<string>", line 1, in <module> ImportError: No module named 'matplolib'
如果收到錯(cuò)誤消息,請(qǐng)使用 pip 下載該庫(kù):
pip install matplotlib
現(xiàn)在 matplotlib 已安裝,我們可以在 Python 中導(dǎo)入它。首先,讓我們創(chuàng)建我們將在本教程中使用的腳本:scatter.py
。然后,在我們的腳本中,讓我們導(dǎo)入 matplotlib。由于我們只會(huì)使用繪圖模塊(pyplot),因此在導(dǎo)入時(shí)讓我們指定它。
import matplotlib.pyplot as plt
我們通過(guò)在 matplotlib
末尾添加 .pyplot
來(lái)指定我們希望導(dǎo)入的模塊。為了在腳本中更容易地引用該模塊,我們將其縮寫為 plt
?,F(xiàn)在,我們可以繼續(xù)創(chuàng)建和繪制我們的數(shù)據(jù)。
步驟 2 — 創(chuàng)建要繪制的數(shù)據(jù)點(diǎn)
在我們的 Python 腳本中,讓我們創(chuàng)建一些要處理的數(shù)據(jù)。我們將使用 2D 數(shù)據(jù),因此我們將需要每個(gè)數(shù)據(jù)點(diǎn)的 X 和 Y 坐標(biāo)。
為了更好地理解 matplotlib 的工作原理,我們將把我們的數(shù)據(jù)與可能的現(xiàn)實(shí)場(chǎng)景聯(lián)系起來(lái)。假設(shè)我們是一家咖啡店的老板,我們對(duì)一年中的平均天氣和冰咖啡的總銷量之間的關(guān)系感興趣。我們的 X 變量將是每月銷售的冰咖啡總數(shù),我們的 Y 變量將是每個(gè)月的華氏平均溫度。
在我們的 Python 腳本中,我們將創(chuàng)建兩個(gè)列表變量:X
(冰咖啡總銷量)和 Y
(平均溫度)。我們各自列表中的每個(gè)項(xiàng)目將代表每個(gè)月的數(shù)據(jù)(一月到十二月)。例如,在一月份,平均溫度為 32 華氏度,咖啡店賣出了 590 杯冰咖啡。
import matplotlib.pyplot as plt X = [590,540,740,130,810,300,320,230,470,620,770,250] Y = [32,36,39,52,61,72,77,75,68,57,48,48]
現(xiàn)在我們有了數(shù)據(jù),我們可以開(kāi)始繪圖。
步驟 3 — 繪制數(shù)據(jù)
散點(diǎn)圖非常適合用于確定兩個(gè)變量之間的關(guān)系,因此我們將使用這種圖表類型作為示例。要使用 matplotlib 創(chuàng)建散點(diǎn)圖,我們將使用 scatter()
函數(shù)。該函數(shù)需要兩個(gè)參數(shù),分別表示 X 和 Y 坐標(biāo)值。
import matplotlib.pyplot as plt X = [590,540,740,130,810,300,320,230,470,620,770,250] Y = [32,36,39,52,61,72,77,75,68,57,48,48] plt.scatter(X,Y) plt.show()
每次創(chuàng)建圖表時(shí),我們都必須使用 plt.show()
指定要顯示圖表。
在繼續(xù)之前,讓我們檢查一下我們的腳本是否正常工作。保存腳本并通過(guò)命令行運(yùn)行:
python scatter.py
如果一切順利,應(yīng)該會(huì)啟動(dòng)一個(gè)窗口顯示圖表,如下所示:
!Alt 散點(diǎn)圖
這個(gè)窗口非常適合查看數(shù)據(jù);它是交互式的,并包括幾個(gè)功能,比如懸停顯示標(biāo)簽和坐標(biāo)、放大或縮小以及保存。
步驟 4 — 添加標(biāo)題和標(biāo)簽
現(xiàn)在我們知道我們的腳本正常工作,我們可以開(kāi)始向圖表中添加信息。為了清楚地表明我們的數(shù)據(jù)代表什么,讓我們?cè)趫D表中包括一個(gè)標(biāo)題以及每個(gè)軸的標(biāo)簽。
我們將從添加標(biāo)題開(kāi)始。我們?cè)谀_本的 plt.show()
行之前添加標(biāo)題。
import matplotlib.pyplot as plt X = [590,540,740,130,810,300,320,230,470,620,770,250] Y = [32,36,39,52,61,72,77,75,68,57,48,48] plt.scatter(X,Y) plt.title('溫度與冰咖啡銷量之間的關(guān)系') plt.show()
接下來(lái),在 plt.title
行下方添加軸的標(biāo)簽:
... plt.xlabel('售出的冰咖啡杯數(shù)') plt.ylabel('華氏溫度') ...
如果我們保存腳本并再次運(yùn)行它,現(xiàn)在應(yīng)該會(huì)得到一個(gè)更新的圖表,更具信息性。我們的更新后的圖表應(yīng)該看起來(lái)像這樣:
!Alt 帶有標(biāo)題和 X/Y 標(biāo)簽的散點(diǎn)圖
步驟 5 — 自定義圖表
我們處理的每個(gè)數(shù)據(jù)集都是獨(dú)特的,能夠自定義我們希望如何顯示信息非常重要。記住,可視化也是一門藝術(shù),所以可以在其中發(fā)揮創(chuàng)意!matplotlib 包括許多自定義功能,比如不同的顏色、點(diǎn)符號(hào)和大小。根據(jù)我們的需求,我們可能想嘗試不同的比例,為我們的軸使用不同的范圍。我們可以通過(guò)指定軸的新范圍來(lái)更改默認(rèn)參數(shù),如下所示:
import matplotlib.pyplot as plt X = [590,540,740,130,810,300,320,230,470,620,770,250] Y = [32,36,39,52,61,72,77,75,68,57,48,48] plt.scatter(X,Y) plt.xlim(0,1000) plt.ylim(0,100) plt.title('溫度與冰咖啡銷量之間的關(guān)系') plt.show() ...
原始圖表中的點(diǎn)看起來(lái)有點(diǎn)小,藍(lán)色可能不是我們想要的顏色。也許我們想要三角形而不是圓圈作為點(diǎn)的符號(hào)。如果我們想要更改點(diǎn)的實(shí)際顏色/大小/形狀,我們必須在初始的 plt.scatter()
調(diào)用中進(jìn)行這些更改。我們將更改以下參數(shù):
s
:點(diǎn)的大小,默認(rèn)值為 20c
:顏色、序列或顏色序列,默認(rèn)值為 ‘b’marker
:點(diǎn)符號(hào),默認(rèn)值為 ‘o’
可能的標(biāo)記包括許多不同的形狀,如菱形、六邊形、星形等。顏色選擇包括藍(lán)色、綠色、紅色和洋紅色等。還可以提供 HTML 十六進(jìn)制字符串作為顏色。請(qǐng)參閱 matplotlib 的文檔,了解可能的標(biāo)記和顏色的全面列表。
為了使我們的圖表更易于閱讀,讓我們將點(diǎn)的大小加倍(s=60
),將顏色更改為紅色(c='r'
),并將符號(hào)更改為三角形(marker='^'
)。我們將修改 plt.scatter()
函數(shù):
plt.scatter(X, Y, s=60, c='red', marker='^')
在運(yùn)行更新后的腳本之前,我們可以再次檢查我們的代碼是否正確。自定義圖表的更新腳本應(yīng)該看起來(lái)像這樣:
import matplotlib.pyplot as plt X = [590,540,740,130,810,300,320,230,470,620,770,250] Y = [32,36,39,52,61,72,77,75,68,57,48,48]
#散點(diǎn)圖
plt.scatter(X, Y, s=60, c='red', marker='^')
#更改坐標(biāo)軸范圍
plt.xlim(0,1000) plt.ylim(0,100)
#添加標(biāo)題
plt.title('溫度與冰咖啡銷量的關(guān)系')
#添加 x 和 y 軸標(biāo)簽
plt.xlabel('售出冰咖啡杯數(shù)') plt.ylabel('華氏溫度')
#顯示圖表
plt.show()
不要忘記在進(jìn)行第 6 步之前保存你的腳本。
步驟 6 — 保存圖表
現(xiàn)在我們已經(jīng)完成了代碼,讓我們運(yùn)行它來(lái)查看我們新定制的圖表。
python scatter.py
現(xiàn)在應(yīng)該會(huì)打開(kāi)一個(gè)窗口顯示我們的圖表:
!Alt 帶有標(biāo)題和 X/Y 標(biāo)簽的最終散點(diǎn)圖,并使用更大、紅色、三角形點(diǎn)進(jìn)行定制。
接下來(lái),通過(guò)單擊保存按鈕(位于底部工具欄上的磁盤圖標(biāo))來(lái)保存圖表。請(qǐng)記住,圖像將被保存為 PNG 格式,而不是交互式圖表。恭喜你,現(xiàn)在你擁有自己定制的散點(diǎn)圖!
結(jié)論
在本教程中,你學(xué)會(huì)了如何使用 Python 中的 matplotlib 繪制數(shù)據(jù)。現(xiàn)在你可以可視化數(shù)據(jù)并定制圖表。
以上就是使用matplotlib在Python中繪制數(shù)據(jù)的詳細(xì)教程的詳細(xì)內(nèi)容,更多關(guān)于 Python matplotlib繪制數(shù)據(jù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python實(shí)現(xiàn)PC屏幕截圖并自動(dòng)發(fā)送郵箱
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)一個(gè)屏幕截圖應(yīng)用程序,可以定時(shí)截取屏幕,并將截圖通過(guò)電子郵件發(fā)送給指定的收件人,需要的可以參考下2024-12-12pandas 數(shù)據(jù)索引與選取的實(shí)現(xiàn)方法
這篇文章主要介紹了pandas 數(shù)據(jù)索引與選取的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06python和websocket構(gòu)建實(shí)時(shí)日志跟蹤器的步驟
這篇文章主要介紹了python和websocket構(gòu)建實(shí)時(shí)日志跟蹤器的步驟,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-04-04Python實(shí)現(xiàn)多格式文本轉(zhuǎn)為word
在現(xiàn)代工作中,我們常常需要處理不同格式的文件,其中Word文檔是最為常見(jiàn)的一種,本文主要介紹了如何使用Python創(chuàng)建一個(gè)全能的文件處理工具,能夠?qū)⒍喾N格式的文件轉(zhuǎn)換為Word文檔,需要的可以參考下2023-11-11基于Python實(shí)現(xiàn)股票數(shù)據(jù)分析的可視化
在購(gòu)買股票的時(shí)候,可以使用歷史數(shù)據(jù)來(lái)對(duì)當(dāng)前的股票的走勢(shì)進(jìn)行預(yù)測(cè),這就需要對(duì)股票的數(shù)據(jù)進(jìn)行獲取并且進(jìn)行一定的分析。本文將介紹如何通過(guò)Python實(shí)現(xiàn)股票數(shù)據(jù)分析的可視化,需要的可以參考一下2021-12-12pandas如何統(tǒng)計(jì)某一列或某一行的缺失值數(shù)目
這篇文章主要介紹了pandas如何統(tǒng)計(jì)某一列或某一行的缺失值數(shù)目,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05