摘要:概述是使用開(kāi)發(fā)的一個(gè)繪圖庫(kù),是界進(jìn)行數(shù)據(jù)可視化的首選庫(kù)??梢酝ㄟ^(guò)圖形示例來(lái)快速瀏覽所有支持的圖形。最后,調(diào)用把繪制好的圖形顯示出來(lái)。對(duì)應(yīng)于三個(gè)參數(shù),表示行,表示列,表示位置。因此,表示在圖表中總共有個(gè)圖形,當(dāng)前新增的圖形添加到位置。
概述
Matplotlib 是使用 Python 開(kāi)發(fā)的一個(gè)繪圖庫(kù),是 Python 界進(jìn)行數(shù)據(jù)可視化的首選庫(kù)。
它提供了繪制圖形的各種工具,支持的圖形包括簡(jiǎn)單的散點(diǎn)圖、曲線圖和直方圖,也包括復(fù)雜的三維圖形等,基本上做到了只有你想不到,沒(méi)有它做不到的地步??梢酝ㄟ^(guò)圖形示例來(lái)快速瀏覽所有支持的圖形。
從最簡(jiǎn)單開(kāi)始,繪制一條正玄曲線:
import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 2 * np.pi, 50) y = np.sin(x) plt.plot(x, y) plt.show()
運(yùn)行后看到的結(jié)果類(lèi)似為:
最開(kāi)始時(shí),引入相關(guān)模塊并重命名為 np 和 plt ,其中 np 用來(lái)生成圖形數(shù)據(jù),plt 就是我們的繪圖模塊。
接著使用 np.linspace 生成了包含 50 個(gè)元素的數(shù)組作為 x 軸數(shù)據(jù),這些元素均勻的分布在 [0, 2π] 區(qū)間上。然后使用 np.sin 生成 x 對(duì)應(yīng)的 y 軸數(shù)據(jù)。
再接著 plt.plot(x, y) 會(huì)自動(dòng)創(chuàng)建一個(gè)圖形,并把 x 和 y 繪制到圖形上。
最后,調(diào)用 plt.show() 把繪制好的圖形顯示出來(lái)。
注意,使用 plot() 方法時(shí)我們傳入了兩組數(shù)據(jù): x 和 y,分別對(duì)應(yīng) x 軸和 y 軸。如果僅僅傳入一組數(shù)據(jù)的話,那么該數(shù)據(jù)就是 y 軸數(shù)據(jù), x 軸將會(huì)使用數(shù)組索引作為數(shù)據(jù)。例如 plt.plot(y) 的結(jié)果為:
圖表組成從上面繪制的圖表中,可以看到它包含有 x 、y 軸刻度和曲線本身,但一個(gè)完整的圖表還可以展示更多的信息。
下圖展示了圖表的所有元素:
圖表是用戶所見(jiàn)的整張圖片,它管理著所有的坐標(biāo)系,輔助元素(標(biāo)題、圖例等)和畫(huà)布。只要知道畫(huà)布是真正繪制圖形的地方就可以了,對(duì)它不用了解太多。一張圖表可以有多個(gè)坐標(biāo)系,因?yàn)樗梢杂卸鄠€(gè)圖形,一個(gè)坐標(biāo)系只能屬于一張圖表。比如下圖,
它在一張圖表內(nèi)畫(huà)了四個(gè)圖形,每個(gè)圖形都有自己獨(dú)立的坐標(biāo)系。二維坐標(biāo)系包含兩條坐標(biāo)軸,三維的話則是三條。
注意區(qū)分圖表和圖形,圖表是整張圖片,圖形是圖表的一部分。
另一種編程風(fēng)格在前面繪制正玄曲線的代碼中,可能并不太好理解圖表是何時(shí)、如何創(chuàng)建的。
下面換用另一種編程風(fēng)格實(shí)現(xiàn)相同的正玄曲線圖形,這可以幫助我們理解更詳細(xì)的過(guò)程。
import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 2 * np.pi, 50) y = np.sin(x) fig = plt.figure() ax = fig.add_subplot(1, 1, 1) ax.plot(x, y) plt.show()
可以看出,與之前的編碼相比,這里多了兩行代碼,而且使用 ax 代替 plot 來(lái)繪制圖形。
其中,fig = plt.figure() 顯式創(chuàng)建了一個(gè)圖表對(duì)象 fig,剛創(chuàng)建的圖表此時(shí)還是空的,什么內(nèi)容都沒(méi)有。
接著,ax = fig.add_subplot(1, 1, 1) 往圖表中新增了一個(gè)圖形對(duì)象,返回值 ax 為該圖形的坐標(biāo)系。
add_subplot() 的參數(shù)指明了圖形數(shù)量和圖形位置。(1, 1, 1) 對(duì)應(yīng)于 (R, C, P) 三個(gè)參數(shù),R 表示行,C 表示列,P 表示位置。因此,(1, 1, 1) 表示在圖表中總共有 1 x 1 個(gè)圖形,當(dāng)前新增的圖形添加到位置 1 。
如果改為 fig.add_subplot(1, 2, 1) 則表示圖表?yè)碛?1 行 2 列總共有 2 個(gè)圖形,最終展示結(jié)果為:
右邊的空白處為位置 2 的圖形位置,因?yàn)闆](méi)有往該位置添加圖形,所以顯示為空白。
(1, 1, 1) 也可以簡(jiǎn)寫(xiě)為三個(gè)數(shù)字組成的三位整數(shù),即 plt.add_subplot(111) 。
這種編程風(fēng)格更符合程序員的編程習(xí)慣,所以推薦使用這種編程風(fēng)格。
使用這種編程風(fēng)格時(shí),Matplotlib 的基本使用過(guò)程可總結(jié)如下:
應(yīng)用實(shí)踐利用上面學(xué)到的概念,下面繪制了一個(gè)更復(fù)雜些的圖表,里面使用了一些常用接口,最終效果如下:
代碼實(shí)現(xiàn):
import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 2 * np.pi, 50) # 創(chuàng)建圖表 fig = plt.figure(figsize=(13, 9), dpi=90) fig.suptitle("Figure Example") # 繪制圖形 1 ax1 = fig.add_subplot(2, 2, 1) ax1.set_title("Subplot 1") ax1.plot(x, np.sin(x)) ax1.plot(x, np.sin(2 * x)) # 繪制圖形 2 ax2 = fig.add_subplot(2, 2, 2) ax2.set_title("Subplot 2") ax2.plot(x, np.sin(x), "r-o", label="Sin(x)") ax2.plot(x, np.cos(x), color="green", linestyle="dashed", label="Cos(x)") ax2.legend() ax2.set_xlabel("Rads") ax2.set_ylabel("Amplitude") # 繪制圖形 3 ax3 = fig.add_subplot(2, 2, 3) ax3.set_title("Subplot 3") ax3.scatter(x, np.sin(x), marker="^") ax3.scatter(x, np.cos(x + np.pi / 2), marker="x") ax3.axhline(0, color="red", linestyle="dashed", linewidth=0.5) ax3.axvline(np.pi, color="red", linestyle="dashed", linewidth=0.5) # 繪制圖形 4 fig.add_subplot(2, 2, 4) ax4 = fig.axes[3] ax4.set_title("Subplot 4") ax4.hist(np.random.randn(100), 10) plt.show()
如果想對(duì)圖形做更多自定義的部分,可以在 Axes API 查詢相關(guān)接口。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/44664.html
摘要:當(dāng)數(shù)據(jù)發(fā)生變化時(shí),這種演變過(guò)程隨之發(fā)生。是一種統(tǒng)計(jì)報(bào)告圖,由一系列高度不等的縱向條紋或線段表示數(shù)據(jù)分布的情況。 showImg(https://segmentfault.com/img/bVbnkP1?w=751&h=558); python相關(guān) 基礎(chǔ)概念 數(shù)據(jù):離散的,客觀事實(shí)的數(shù)字表示 信息:處理后的數(shù)據(jù),為實(shí)際問(wèn)題提供答案 - 為數(shù)據(jù)提供一種關(guān)系或一個(gè)關(guān)聯(lián)后,數(shù)據(jù)就成了信...
摘要:本文作為學(xué)習(xí)過(guò)程中對(duì)一些常用知識(shí)點(diǎn)的整理,方便查找。所有繪圖操作僅對(duì)當(dāng)前圖和當(dāng)前坐標(biāo)有效。表示把圖標(biāo)分割成的網(wǎng)格。每個(gè)對(duì)象都是一個(gè)擁有自己坐標(biāo)系統(tǒng)的繪圖區(qū)域。避免比例壓縮為橢圓數(shù)據(jù)可視化入門(mén)教程繪圖核心剖析如何調(diào)整子圖的大小 本文作為學(xué)習(xí)過(guò)程中對(duì)matplotlib一些常用知識(shí)點(diǎn)的整理,方便查找。 強(qiáng)烈推薦ipython無(wú)論你工作在什么項(xiàng)目上,IPython都是值得推薦的。利用ipyt...
摘要:在上篇文章里,為大家推薦了一些數(shù)學(xué)學(xué)習(xí)的軟件和微積分線性代數(shù)概率統(tǒng)計(jì)的學(xué)習(xí)視頻,今天再推薦一些精心挑選的經(jīng)典教材,并為大家提供電子書(shū)的下載鏈接,和視頻搭配起來(lái)一起學(xué)習(xí),效果會(huì)更好。我們要使用的以及等都包含在里面,無(wú)需額外下載。 在上篇文章里,為大家推薦了一些數(shù)學(xué)學(xué)習(xí)的軟件和微積分、線性代數(shù)、概率統(tǒng)計(jì)的學(xué)習(xí)視頻,今天再推薦一些精心挑選的經(jīng)典教材,并為大家提供電子書(shū)的下載鏈接,和視頻搭配起...
摘要:有一些表示常見(jiàn)圖形的對(duì)象稱(chēng)為塊,完整的集合位于。中的繪圖函數(shù)在中,有行標(biāo)簽列標(biāo)簽分組信息。密度圖通過(guò)計(jì)算可能會(huì)產(chǎn)生觀測(cè)數(shù)據(jù)的連續(xù)概率分布的估計(jì)而產(chǎn)生的。在探索式數(shù)據(jù)分析工作中,同時(shí)觀察一組變量的散布圖是很有意義的。 我們?cè)谏弦黄榻B了 pandas,本篇介紹 matplotlib。 繪圖和可視化 一個(gè)用于創(chuàng)建出版質(zhì)量圖表的桌面繪圖包。 Matplotlib API入門(mén) Figure ...
摘要:下面,作者介紹了八種在中實(shí)現(xiàn)的可視化工具包,其中有些包還能用在其它語(yǔ)言中。當(dāng)提到這些可視化工具時(shí),我想到三個(gè)詞探索數(shù)據(jù)分析。還可以選擇樣式,它模擬了像和等很流行的美化工具。有很多數(shù)據(jù)可視化的包,但沒(méi)法說(shuō)哪個(gè)是最好的。 showImg(https://segmentfault.com/img/remote/1460000019029121); 作者:Aaron Frederick 喜歡用...
閱讀 3310·2023-04-25 19:42
閱讀 1329·2021-11-23 10:11
閱讀 2252·2021-11-16 11:51
閱讀 1590·2019-08-30 15:54
閱讀 2036·2019-08-29 18:44
閱讀 1609·2019-08-23 18:24
閱讀 494·2019-08-23 17:52
閱讀 1764·2019-08-23 15:33