雖然使用matplotlib.pyplot模塊很容易快速生成繪圖,但建議使用面向?qū)ο蟮姆椒?,因為它可以更好地控制和自定義繪圖。matplotlib.axes.Axes類中也提供了大多數(shù)函數(shù)。
使用更正式的面向?qū)ο蠓椒ū澈蟮闹饕枷胧莿?chuàng)建圖形對象,然后只調(diào)用該對象的方法或?qū)傩浴_@種方法有助于更好地處理其上有多個繪圖的畫布。
在面向?qū)ο蟮慕缑嬷校琍yplot僅用于一些功能,如圖形創(chuàng)建,用戶顯式創(chuàng)建和跟蹤圖形和軸對象。在此級別,用戶使用Pyplot創(chuàng)建圖形,通過這些圖形,可以創(chuàng)建一個或多個軸對象。然后,這些軸對象用于大多數(shù)繪圖操作。
首先,創(chuàng)建一個提供空畫布的圖形實例。
# Filename : example.py # Copyright : 2020 By Nhooo # Author by : www.jixiangtaizi.com.cn # Date : 2020-08-08 fig = plt.figure()
將軸添加到圖形中。add_axes()方法需要一個4個元素的列表對象,對應(yīng)于圖形的左側(cè),底部,寬度和高度。每個數(shù)字必須介于0和1之間 -
# Filename : example.py # Copyright : 2020 By Nhooo # Author by : www.jixiangtaizi.com.cn # Date : 2020-08-08 ax=fig.add_axes([0,0,1,1])
設(shè)置x和y軸的標簽以及標題 -
# Filename : example.py # Copyright : 2020 By Nhooo # Author by : www.jixiangtaizi.com.cn # Date : 2020-08-08 ax.set_title("sine wave") ax.set_xlabel('angle') ax.set_ylabel('sine')
調(diào)用axes對象的plot()方法。
# Filename : example.py # Copyright : 2020 By Nhooo # Author by : www.jixiangtaizi.com.cn # Date : 2020-08-08 ax.plot(x,y)
如果使用的是 Jupyter notebook,則需要加入%matplotlib inline指令; pyplot模塊的show()函數(shù)顯示圖形。
閱讀并執(zhí)行以下代碼 -
# Filename : example.py # Copyright : 2020 By Nhooo # Author by : www.jixiangtaizi.com.cn # Date : 2020-08-08 #! /usr/bin/env python #coding=utf-8 from matplotlib import pyplot as plt import numpy as np import math # 顯示中文設(shè)置... plt.rcParams['font.sans-serif'] = ['SimHei'] # 步驟一(替換sans-serif字體) plt.rcParams['axes.unicode_minus'] = False # 步驟二(解決坐標軸負數(shù)的負號顯示問題) %matplotlib inline x = np.arange(0, math.pi*2, 0.05) y = np.sin(x) fig = plt.figure() ax = fig.add_axes([0,0,1,1]) ax.plot(x,y) ax.set_title("正弦波") ax.set_xlabel('角度') ax.set_ylabel('正弦') plt.show()
上面的代碼行生成以下輸出 -
在 Jupyter notebook中運行時相同的代碼 -
# Filename : example.py # Copyright : 2020 By Nhooo # Author by : www.jixiangtaizi.com.cn # Date : 2020-08-08 #! /usr/bin/env python #coding=utf-8 from matplotlib import pyplot as plt import numpy as np import math # 顯示中文設(shè)置... plt.rcParams['font.sans-serif'] = ['SimHei'] # 步驟一(替換sans-serif字體) plt.rcParams['axes.unicode_minus'] = False # 步驟二(解決坐標軸負數(shù)的負號顯示問題) %matplotlib inline x = np.arange(0, math.pi*2, 0.05) y = np.sin(x) fig = plt.figure() ax = fig.add_axes([0,0,1,1]) ax.plot(x,y) ax.set_title("正弦波") ax.set_xlabel('角度') ax.set_ylabel('正弦') plt.show()
顯示輸出如下所示 -