首頁 > 軟體

如何在Python中利用matplotlib.pyplot畫出函數圖詳解

2022-08-02 14:04:34

0、引言

為了讓使用者能夠使用python時,方便地繪製 2D 圖表,PYTHON的模組中提供Matplotlib模組中所含的子庫pyplot,提供了和 MATLAB 類似的繪圖功能。Pyplot 包含一系列繪圖函數的相關函數,每個函數會對當前的影象進行一些修改。本文通過繪製三角函數cos()來對其中一些重要函數進行講解。

1、繪圖

(1)匯入所需庫

import numpy as np
import matplotlib.pyplot as plt

# 用於顯示中文字元
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

(2)設定函數

t = np.arange(0, 12, 0.01)
s = np.cos(2 * np.pi * t)

(3)plt.figure()

figure()函數用於展開和設定畫布相關引數,figure(num, figsize),num設定為數位時為畫布編號,字串時為畫布名;figsize用於設定畫布大小(長,寬)。兩者不是必須設定的,如果沒有,會自動生成合適的結果。還有其他一些引數可以設定,但不常用,就不介紹了,想了解的自行搜尋相關內容。

plt.figure(num=1, figsize=(10, 10))

(4)plt.plot(),plt.axhline(),plt.axvline(),plt.axhspan(),plt.axvspan()

plot()用於繪製點和線

plt.plot(x, y, format_string, **kwargs),其中:

  • x:X軸資料,列表或陣列,可選
  • y:Y軸資料,列表或陣列
  • format_string:控制曲線的格式字串,可選。包括線條的顏色,樣式,寬度等
  • **kwargs:第二組或更多(x,y,format_string),可畫多條曲線
plt.plot(t, s, color='red', ls='-', label='sinx')

plt.axhline(),plt.axvline()分別用於繪製平行於x軸和y軸的直線,引數設定和plt.plot()相似。

# 畫y=o的直線,平行於x軸;
plt.axhline(y=0, color='green', lw=2, label='分割線')
# 畫x=4的直線,平行於y軸;
plt.axvline(x=0, color='b', lw=2, label='分割線2')

plt.axhspan(),plt.axvspan()用於繪製垂直於y軸和x軸的參考區域

# 繪製垂直於x軸的參考區域
plt.axhspan(ymin=0, ymax=.1, facecolor='r', alpha=0.2)
plt.axvspan(xmin=0, xmax=1, facecolor='r', alpha=0.2)

(5)設定 x,y 軸的數值範圍

plt.axis([xmin, xmax, ymin, ymax])和plt.xlim(xmin, xmax),plt.ylim(ymin, ymax)功能相同,用於設定座標軸範圍;plt.xticks(list(range(xmin, xmax, 刻度間距))),plt.yticks(list(range((ymin, ymax, 刻度間距)))能更加精確地設定自己想要刻度。

# plt.axis([x_min, x_max, y_min, y_max])
# plt.xlim(0, 12)
# plt.ylim(-1, 1)
plt.xticks(list(range(0, 12, 2)))
plt.yticks(list(range(-1, 2, 1)))

(6)設定 x,y 軸的標題文字

plt.xlabel('x軸')
plt.ylabel('y軸')

(7)設定圖例和標題

plt.legend()'
plt.title("正弦函數")

plt.legend()要想正常實現功能效果,plt.plot()中label必須設定。

(8)plt.show()

必須有的函數。在關閉show()函數彈出的影象視窗前,show()函數後面的程式碼不會執行,直到使用者關閉影象視窗,才會繼續。
完整程式碼:

import numpy as np
import matplotlib.pyplot as plt

# 用於顯示中文字元
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 預設引數
t = np.arange(0, 12, 0.01)
s = np.cos(2 * np.pi * t)
s2 = np.sin(2 * np.pi * t)
# 開啟一個畫布
plt.figure(num=1, figsize=(10, 10))

# 畫函數線,沒有label,圖例舊無法顯示
plt.plot(t, s, color='red', ls='-', label='cosx', )
# 畫y=o的直線,平行於x軸;
plt.axhline(y=0, color='green', lw=2, label='分割線')
# 畫x=4的直線,平行於y軸;
plt.axvline(x=0, color='b', lw=2, label='分割線2')
# 繪製垂直於x軸的參考區域
plt.axhspan(ymin=0, ymax=.1, facecolor='r', alpha=0.2)
plt.axvspan(xmin=0, xmax=1, facecolor='r', alpha=0.2)

# 設定 x,y 軸的數值範圍
# plt.axis([x_min, x_max, y_min, y_max])
# plt.xlim(0, 12)
# plt.ylim(-1, 1)
plt.xticks(list(range(0, 12, 2)))# 可調刻度
plt.yticks(list(range(-1, 2, 1)))
# 設定 x,y 軸的標題文字
plt.xlabel('x軸')
plt.ylabel('y軸')

# 設定圖例
#plt.legend(loc='upper left', bbox_to_anchor=(0.2, 0.95))
plt.legend()
plt.title("正弦函數")

# 在關閉show()函數彈出的影象視窗前,show()函數後面的程式碼不會執行,直到使用者關閉影象視窗,才會繼續。
plt.show()

2執行結果

總結 

到此這篇關於如何在Python中利用matplotlib.pyplot畫出函數圖的文章就介紹到這了,更多相關Python matplotlib.pyplot畫函數圖內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com