天天看點

【DataWhale資料可視化學習】認識Matplotlibmatplotlib介紹簡單繪圖例子Figure的組成兩種繪圖接口

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()  #顯示出圖像
           
【DataWhale資料可視化學習】認識Matplotlibmatplotlib介紹簡單繪圖例子Figure的組成兩種繪圖接口

Figure的組成

完整的matplotlib圖像通常會包括以下四個層級(容器),在matplotlib中,将通過各種指令方法來操作圖像中每一部分,進而達到資料可視化的效果,一幅完整的圖像就是各類子元素的集合。

  • Figure:頂級層,用來容納所有繪圖元素
  • Axes:核心,容納了大量元素用來構造一幅幅子圖,一個figure可以由一個或多個子圖組成。(2D繪圖)
  • Axis:axes下屬層級,用來處理所有和坐标軸、網格有關的元素(具體的x軸或者y軸,可以用

    Axes.get_xaxis( )

    來對x軸進行操作)
  • Tick:axes下屬層級,用來處理所有和刻度有關的元素

兩種繪圖接口

matplotlib提供了兩種繪圖接口:

  • 顯式建立figure和axes,在上面調用繪圖方法,被稱為OO模式
  • 依賴pyplot自動建立figure和axes

OO模式

  • ax.legend( )

    增加圖例,顯示labels
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( )
           
【DataWhale資料可視化學習】認識Matplotlibmatplotlib介紹簡單繪圖例子Figure的組成兩種繪圖接口

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( )
           

結果同上

上一篇: do_Keyword