使用 NumPy 和 Matplotlib 繪制函數(shù)圖
Matplotlib是Python的繪圖庫,它與Numpy一起使用
【引例】
畫出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") #畫函數(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") #畫函數(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) ######################################################### # 以下部分為畫圖程序 # 設(shè)置兩個(gè)子圖窗口,將Sigmoid的函數(shù)圖像畫在上邊 f = plt.subplot(2,1,1) # 畫出函數(shù)曲線 plt.plot(x, s, color='r') # 添加文字說明 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ù)圖像畫在下邊 f = plt.subplot(2,1,2) # 畫出函數(shù)曲線 plt.plot(x, y, color='g') # 添加文字說明 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)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Pytorch 數(shù)據(jù)加載與數(shù)據(jù)預(yù)處理方式
今天小編就為大家分享一篇Pytorch 數(shù)據(jù)加載與數(shù)據(jù)預(yù)處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12五個(gè)Jupyter?Notebook實(shí)用魔法命令分享
Jupyter?Notebook是一個(gè)開源的交互式編程環(huán)境,用于創(chuàng)建和共享包含實(shí)時(shí)代碼、文本等,本文主要來和大家分享一些有趣的Jupyter?Notebook魔法命令,需要的可以參考一下2023-07-07python實(shí)現(xiàn)驗(yàn)證碼識(shí)別功能
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)驗(yàn)證碼識(shí)別功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06python如何通過twisted搭建socket服務(wù)
這篇文章主要介紹了python如何通過twisted搭建socket服務(wù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02100 個(gè) Python 小例子(練習(xí)題二)
這篇文章主要繼續(xù)上一篇文章100 個(gè) Python 小例子(練習(xí)題一)來完成100 個(gè) Python 小例子,本文包括字母識(shí)詞、反向輸出II、表轉(zhuǎn)字符串、設(shè)置輸出顏色、算素?cái)?shù)等例子,需要的朋友可以參考一下2021-10-10Python代碼實(shí)現(xiàn)http/https代理服務(wù)器的腳本
這篇文章主要介紹了Python代碼做出http/https代理服務(wù)器,啟動(dòng)即可做http https透明代理使用,通過幾百行代碼做出http/https代理服務(wù)器代碼片段,需要的朋友可以參考下2019-08-08Python?Pygame繪制直線實(shí)現(xiàn)光線反射效果
這篇文章主要為大家詳細(xì)介紹了如何利用Python?Pygame繪制直線以實(shí)現(xiàn)光線反射效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11