DataWhale學習筆記:http://datawhale.club/t/topic/538
認識Matplotlib
- matplotlib介紹
- 簡單繪圖例子
-
- 繪制折線圖
- Figure的組成
- 兩種繪圖接口
-
- OO模式
- pyplot自動建立
matplotlib介紹
- 是2D繪圖庫,可以以多種硬拷貝和跨平台的互動環境生成出版物品質的圖形,可以用來繪制各種靜态、動态、互動式的圖表。
- 是公認的資料可視化工具,pandas和seaborn的繪圖接口也是基于此的進階封裝。
簡單繪圖例子
- 圖像是畫在figure(canvas畫布,包括标題、标簽等元素)上的,每個figure又可以包含一個或者多個axes。
- 可以使用
來建立一個空畫布figure1 = plt.figure( )
- 可以用
來向畫布中添加一個空的坐标axes1 = figure1.add_subplot( )
繪制折線圖
- 通過pyplot.subplots指令,建立axes後,可以使用Axes.plot繪制簡單折線圖。
- 在Spyder中,可以直接寫前四行代碼,但是在pycharm中,必須加上plt.show()才可以将圖像顯示出來。
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots() # 建立一個包含一個axes的figure
ax.plot([1, 2, 3, 4], [1, 4, 2, 3]) # 繪制圖像
plt.show() #顯示出圖像
Figure的組成
完整的matplotlib圖像通常會包括以下四個層級(容器),在matplotlib中,将通過各種指令方法來操作圖像中每一部分,進而達到資料可視化的效果,一幅完整的圖像就是各類子元素的集合。
- Figure:頂級層,用來容納所有繪圖元素
- Axes:核心,容納了大量元素用來構造一幅幅子圖,一個figure可以由一個或多個子圖組成。(2D繪圖)
- Axis:axes下屬層級,用來處理所有和坐标軸、網格有關的元素(具體的x軸或者y軸,可以用
來對x軸進行操作)Axes.get_xaxis( )
- Tick:axes下屬層級,用來處理所有和刻度有關的元素
兩種繪圖接口
matplotlib提供了兩種繪圖接口:
- 顯式建立figure和axes,在上面調用繪圖方法,被稱為OO模式
- 依賴pyplot自動建立figure和axes
OO模式
- 用
增加圖例,顯示labelsax.legend( )
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2, 100)
#numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
#在指定的間隔内傳回均勻間隔的數字,傳回num均勻分布的樣本,在[start, stop],這個區間的端點可以任意的被排除在外。
fig, ax = plt.subplots( )
ax.plot(x, x, label = 'liner')
ax.plot(x, x**2, label = 'quadratic')
ax.plot(x, x**3, label = 'cubic')
ax.set_xlabel('x label')
ax.set_ylabel('y label')
ax.set_title("Simple Plot")
ax.legend( )
plt.show( )
pyplot自動建立
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2, 100)
plt.plot(x, x, label = 'liner')
plt.plot(x, x**2, label = 'quadratic')
plt.plot(x, x**3, label = 'cubic')
plt.xlabel('x label')
plt.ylabel('y label')
plt.title("Simple Plot")
plt.legend( )
plt.show( )
結果同上