Python繪制三維立體圖詳解與繪圖填充方式
利用Python繪制三維圖
目標(biāo):
繪制圖像 z^2 = x^2 + y^2 + x/3 + y/3
1.第一步我們先導(dǎo)入畫圖所需要的包
import matplotlib.pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D # 用于繪制3D圖案
2.畫曲面的第一步是就是
要創(chuàng)建一個二維平面的網(wǎng)格,我們先創(chuàng)建這個二維平面的x軸和y軸,范圍在-1到1之間分為100份
x = np.linspace(-1,1,100) y = np.linspace(-1,1,100)
再調(diào)用numpy中的meshgrid函數(shù),進行網(wǎng)格化操作
x_,y_ = np.meshgrid(x,y,indexing='ij')
3.繪制圖形
- plt.figure():自定義圖像
- plt.add_subplot():添加子圖(下面完整代碼中的111的含義是創(chuàng)建一個一行一列的子圖表格,最后一個1表示第一個子圖)
- plt.plot_surface():繪制曲面,plt.colorbar():添加顏色棒
顯示的函數(shù)為:
z_ = x_**2 + y_**2 + x_ / 3 + y_ / 3
4.完整代碼
import matplotlib.pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D #繪制3D圖案 x = np.linspace(-1,1,100) y = np.linspace(-1,1,100) x_, y_ = np.meshgrid(x,y,indexing='ij') z_ = x_**2 + y_**2 + x_ / 3 + y_ / 3 # 畫圖所要表現(xiàn)出來的主函數(shù) fig = plt.figure(figsize=(10, 10), facecolor='white') #創(chuàng)建圖片 sub = fig.add_subplot(111, projection='3d')# 添加子圖, surf = sub.plot_surface(x_, y_, z_, cmap=plt.cm.brg) #繪制曲面,cmap=plt.cm.brg并設(shè)置顏色cmap cb = fig.colorbar(surf, shrink=0.8, aspect=15) #設(shè)置顏色棒 sub.set_xlabel(r"x axis") sub.set_ylabel(r"y axis") sub.set_zlabel(r"z axis") plt.show()
運行結(jié)果如下:
外例
import numpy as np import matplotlib.pyplot as plt fig,ax = plt.subplots() #配置中文顯示 plt.rcParams['font.family'] = ['SimHei'] #用來顯示中文標(biāo)簽 plt.rcParams['axes.unicode_minus'] = False #用來正常顯示符號 def f(t): return np.cos(2*np.pi*t) x1 = np.arange(0.0,4.0,0.5) # 畫出定點圖 x2 = np.arange(0.0,4.0,0.01) plt.figure(1) plt.subplot(1,2,1) plt.plot(x1,f(x1),'bo',x2,f(x2),'k') plt.title('子圖1') plt.subplot(1,2,2) plt.plot(x2,f(x2),'r--') plt.title('子圖2') plt.show()
import matplotlib.pyplot as plt import numpy as np import matplotlib.cm as cm#matplotlib內(nèi)置的顏色地圖 from mpl_toolkits.mplot3d import Axes3D#引入3d繪圖模塊 X = np.arange(-8, 8, 0.25) Y = np.arange(-8, 8, 0.25) X, Y = np.meshgrid(X, Y)#生成網(wǎng)格點矩陣,就是對X,Y進行網(wǎng)格化 R = np.sqrt(X**2 + Y**2 + X + Y)#X**2代表X的二次方 Z = np.sin(R) fig = plt.figure()#Figure(640x480) 生成畫布 ax = Axes3D(fig)#和上一步一起構(gòu)建一個3d畫布 ax.plot_surface(X, Y, Z, rstride=1#行跨(x)為1 , cstride=1 #列跨(y)為1 , cmap=cm.viridis #設(shè)置顏色 )#構(gòu)造3D圖像 ax.contourf(X,Y,Z,#傳入數(shù)據(jù) zdir='z'#設(shè)置為z軸為等高線的不變軸 ,offset=-1#映射位置在z=-1處 ,cmap=plt.get_cmap('rainbow')#設(shè)置顏色為彩虹色 )#繪制圖像的映射,就是等高線圖。 plt.xlabel('x_axis') plt.ylabel('y_axis') plt.show()
import matplotlib.pyplot as plt#引入matplotlib的pyplot模塊 import numpy as np a=np.arange(0.0,5.0,0.01)#構(gòu)造一個0起始,5結(jié)束,0.01為間隔的numpy數(shù)組 b=5*np.cos(a*np.pi*2)#其中的np.pi是圓周率 plt.plot(a,b,'r-',label='first')#將a作為x軸,b作為y軸,ro-中的r代表紅色,0代表實心點標(biāo)識,-代表實線,構(gòu)造一條名為first的曲線。 #plt.xlabel('x_axis') plt.xlabel('時間',fontproperties='SimHei',fontsize=20)#如果名字中有中文的話一定要用fontproperties='SimHei屬性,否則會報錯 #plt.ylabel('y_axis') plt.title('正弦波',fontproperties='SimHei',fontsize=20)#設(shè)置標(biāo)題 plt.xlim((0,5)) plt.ylim((-5,5)) plt.legend(loc='lower right')#注釋的位置 plt.grid(True)#添加網(wǎng)格,flase就是不添加 plt.show()#如果先show,之后保存的就是一張空白的圖
繪圖的填充
調(diào)用函數(shù)fill_between()實現(xiàn)曲線下面部分的填充
import numpy as np import matplotlib.pyplot as plt x = np.linspace(0,1,500) y = np.sin(3*np.pi*x)*np.exp(-4*x) fig,ax = plt.subplots() plt.plot(x,y) plt.fill_between(x,0,y,facecolor = 'green',alpha = 0.3) # plt.fill_between(x[15:300],0,0.4,facecolor = 'green',alpha = 0.3) # 調(diào)整參數(shù)可在部分區(qū)間內(nèi)填充 plt.show()
兩條曲線之間的區(qū)域填充
import numpy as np import matplotlib.pyplot as plt import numpy as np import matplotlib.pyplot as plt x = np.linspace(0,1,500) y1 = np.sin(3*np.pi*x)*np.exp(-4*x) + x y2 = y1 + 0.2 plt.plot(x,y1,'b') plt.plot(x,y2,'r') plt.fill_between(x,y1,y2,facecolor = 'green',alpha = 0.5) plt.show()
直接使用fill進行繪圖的填充
import numpy as np import matplotlib.pyplot as plt x = np.linspace(0,1,500) y = np.sin(3*np.pi*x)*np.exp(-4*x) + 2*x fig,ax = plt.subplots() ax.fill(x,y) plt.show()
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python3 deque 雙向隊列創(chuàng)建與使用方法分析
這篇文章主要介紹了python3 deque 雙向隊列創(chuàng)建與使用方法,結(jié)合實例形式分析了python3 deque 雙向隊列創(chuàng)建、添加、清空、拷貝等相關(guān)操作技巧與使用注意事項,需要的朋友可以參考下2020-03-03Python人工智能深度學(xué)習(xí)模型訓(xùn)練經(jīng)驗總結(jié)
這篇文章主要為大家介紹了Python人工智能深度學(xué)習(xí)模型訓(xùn)練的經(jīng)驗總結(jié)及建議,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2021-11-11Python使用Matplotlib實現(xiàn)創(chuàng)建動態(tài)圖形
動態(tài)圖形是使可視化更具吸引力和用戶吸引力的好方法,它幫助我們以有意義的方式展示數(shù)據(jù)可視化,本文將利用Matplotlib實現(xiàn)繪制一些常用動態(tài)圖形,希望對大家有所幫助2024-02-02Python跨文件實現(xiàn)字符串填充的三種實現(xiàn)方法
本文主要介紹了Python跨文件實現(xiàn)字符串填充的三種實現(xiàn)方法,包括format方法、%格式化操作符和eval函數(shù)結(jié)合f-string,具有一定的參考價值,感興趣的可以了解一下2024-12-12