使用 NumPy 和 Matplotlib 繪制函數(shù)圖
Matplotlib是Python的繪圖庫(kù),它與Numpy一起使用
【引例】
畫(huà)出y=2*x+5的函數(shù)圖像
import numpy as np
from matplotlib import pyplot as plt
#設(shè)置橫坐標(biāo)取值、確定函數(shù)表達(dá)式
x = np.arange(1, 11)
y = 2 * x + 5
#添加標(biāo)題、橫坐標(biāo)、縱坐標(biāo)標(biāo)簽
plt.title("Matplotlib demo")
plt.xlabel("x axis caption")
plt.ylabel("y axis caption")
#畫(huà)函數(shù)圖像
plt.plot(x, y)
plt.show()
【運(yùn)行結(jié)果】

如果需要函數(shù)圖像以圓點(diǎn)呈現(xiàn),而不是用線呈現(xiàn),則需要將 plt.plot(x,y)改為plt.plot(x,y,'ob')
【運(yùn)行結(jié)果】

正弦波 y=sin(x)
import numpy as np
from matplotlib import pyplot as plt
#設(shè)置橫坐標(biāo)取值、確定函數(shù)表達(dá)式
x = np.arange(0, 3*np.pi,0.1)
y = np.sin(x)
#添加標(biāo)題、橫坐標(biāo)、縱坐標(biāo)標(biāo)簽
plt.title("y=sin(x)")
plt.xlabel("x axis caption")
plt.ylabel("y axis caption")
#畫(huà)函數(shù)圖像
plt.plot(x, y)
plt.show()
【運(yùn)行結(jié)果】

余弦函數(shù)只需將 y = np.sin(x) 改為 y = np.cos(x)即可
subplot()函數(shù)
應(yīng)用subplot()函數(shù),在同一圖中繪制不同的東西
# ReLU和Sigmoid激活函數(shù)示意圖
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
#設(shè)置圖片大小
plt.figure(figsize=(6, 4))
# x是1維數(shù)組,數(shù)組大小是從-10. 到10.的實(shí)數(shù),每隔0.1取一個(gè)點(diǎn)
x = np.arange(-10, 10, 0.1)
# 計(jì)算 Sigmoid函數(shù)
s = (np.exp(x)-np.exp(-x))/(np.exp(x)+np.exp(-x))
# 計(jì)算ReLU函數(shù)
y = np.clip(x, a_min = 0., a_max = None)
#########################################################
# 以下部分為畫(huà)圖程序
# 設(shè)置兩個(gè)子圖窗口,將Sigmoid的函數(shù)圖像畫(huà)在上邊
f = plt.subplot(2,1,1)
# 畫(huà)出函數(shù)曲線
plt.plot(x, s, color='r')
# 添加文字說(shuō)明
plt.text(-5., 0.9, r'$y=sigmoid(x)$', fontsize=13)
# 設(shè)置坐標(biāo)軸格式
currentAxis=plt.gca()
currentAxis.xaxis.set_label_text('x', fontsize=15)
currentAxis.yaxis.set_label_text('y', fontsize=15)
# 將ReLU的函數(shù)圖像畫(huà)在下邊
f = plt.subplot(2,1,2)
# 畫(huà)出函數(shù)曲線
plt.plot(x, y, color='g')
# 添加文字說(shuō)明
plt.text(-3.0, 9, r'$y=ReLU(x)$', fontsize=13)
# 設(shè)置坐標(biāo)軸格式
currentAxis=plt.gca()
currentAxis.xaxis.set_label_text('x', fontsize=15)
currentAxis.yaxis.set_label_text('y', fontsize=15)
plt.show()
【運(yùn)行結(jié)果】

普通圖
from matplotlib import pyplot as plt import numpy as np n = 256 #n可以理解為曲線的平滑程度 X = np.linspace(-np.pi,np.pi,n,endpoint=True) Y = np.sin(2*X) plt.plot(X,Y+1,color='red',alpha=1.00) plt.plot(X,Y-1,color='blue',alpha=1.00) plt.show()
【運(yùn)行結(jié)果】

條形圖
from matplotlib import pyplot as plt
#數(shù)據(jù)組1
x = [5,8,11] #橫坐標(biāo)
y = [12,16,6] #對(duì)應(yīng)值
#數(shù)據(jù)組2
x2 = [6,9,12] #橫坐標(biāo)
y2 = [6,15,7] #對(duì)應(yīng)值
plt.bar(x, y, color = 'r', align = 'center')
plt.bar(x2, y2, color = 'g', align = 'center')
plt.title('Bar graph')
plt.ylabel('Y axis')
plt.xlabel('X axis')
plt.show()
【運(yùn)行結(jié)果】

散點(diǎn)圖
from matplotlib import pyplot as plt
import numpy as np
n = 1024
X = np.random.normal(0,30,n)
Y = np.random.normal(0,30,n)
plt.title('scale:30')
plt.scatter(X,Y,color='red')
plt.show()
【運(yùn)行結(jié)果】以下分別是方差分別為5,10,15,20,25,30的散點(diǎn)圖

等高線圖
from matplotlib import pyplot as plt import numpy as np def f(x,y):return(1-x/2+x**5+y**3)*np.exp(-x**2-y**2) #等高線模型 n = 256 #n可以理解為曲線的平滑程度 x = np.linspace(-3,3,n) y = np.linspace(-3,3,n) X,Y = np.meshgrid(x,y) plt.contourf(X,Y,f(X,Y),8,alpha=.75,cmap='jet') C = plt.contour(X,Y,f(X,Y),8,color='black',linewidth=.5) plt.show()
【運(yùn)行結(jié)果】

灰度圖
from matplotlib import pyplot as plt import numpy as np def f(x,y):return(1-x/2+x**5+y**3)*np.exp(-x**2-y**2) n = 10 x = np.linspace(-3,3,4*n) y = np.linspace(-3,3,4*n) X,Y = np.meshgrid(x,y) plt.imshow(f(X,Y)) plt.show()
【運(yùn)行結(jié)果】

餅狀圖
from matplotlib import pyplot as plt import numpy as np n = 20 #n決定了有多少個(gè)分區(qū),該代碼顯示有20個(gè)分區(qū) Z = np.random.uniform(0,1,n) plt.pie(Z) plt.show()
【運(yùn)行結(jié)果】

量場(chǎng)圖
from matplotlib import pyplot as plt import numpy as np n = 8 X,Y = np.mgrid[0:n,0:n] plt.quiver(X,Y,color="red") plt.show()
【運(yùn)行結(jié)果】

極軸圖
from matplotlib import pyplot as plt
import numpy as np
plt.figure(figsize=(4,4))
ax1 = plt.subplot(111,projection='polar')
ax1.set_title('spot fish')
ax1.set_rlim(0,12)
data = np.random.randint(1,10,10)
theta = np.arange(0,2*np.pi,2*np.pi/10)
bar = ax1.bar(theta,data,alpha=0.5)
for r,bar in zip(data,bar):
bar.set_facecolor(plt.cm.jet(r/10.))
plt.show()
【運(yùn)行結(jié)果】

3D圖
到此這篇關(guān)于使用 NumPy 和 Matplotlib 繪制函數(shù)圖的文章就介紹到這了,更多相關(guān)NumPy Matplotlib 內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信