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