創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!

這篇文章將為大家詳細(xì)講解有關(guān)Python如何實(shí)現(xiàn)3D繪圖方式,小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
Axes3D 對象創(chuàng)建方法一:Axes3D(fig)
在 Matplotlib 1.0.0 版本中,繪制 3D 圖需要先導(dǎo)入 Axes3D 包,獲取 figure 畫布對象 fig 后,通過 Axes3D(fig) 方法來創(chuàng)建 Axes3D 對象,具體方法如下:
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # 獲取 figure 畫布并創(chuàng)建 Axes3D 對象 fig = plt.figure() ax = Axes3D(fig) # 數(shù)據(jù)坐標(biāo) z = np.linspace(0, 15, 1000) x = np.sin(z) y = np.cos(z) # 繪制線性圖 ax.plot(x, y, z) plt.show()
Axes3D 對象創(chuàng)建方法二:add_subplot
在 Matplotlib 3.2.0 版本中,繪制 3D 圖可以通過創(chuàng)建子圖,然后指定 projection 參數(shù) 為 3d 即可,返回的 ax 為 Axes3D 對象,以下兩種方法均可:
import numpy as np import matplotlib.pyplot as plt # 獲取 figure 畫布并通過子圖創(chuàng)建 Axes3D 對象 fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # 數(shù)據(jù)坐標(biāo) z = np.linspace(0, 15, 1000) x = np.sin(z) y = np.cos(z) # 繪制線性圖 ax.plot(x, y, z) plt.show()
import numpy as np import matplotlib.pyplot as plt # 通過子圖創(chuàng)建 Axes3D 對象 ax = plt.subplot(111, projection='3d') # 數(shù)據(jù)坐標(biāo) z = np.linspace(0, 15, 1000) x = np.sin(z) y = np.cos(z) # 繪制線性圖 ax.plot(x, y, z) plt.show()
【01x03】Axes3D 對象創(chuàng)建方法三:gca
除了以上兩種方法以外,還可以先獲取畫布對象 fig,再通過 fig.gca() 方法獲取當(dāng)前繪圖區(qū)(gca = Get Current Axes),然后指定 projection 參數(shù) 為 3d 即可,返回的 ax 為 Axes3D 對象。
import numpy as np import matplotlib.pyplot as plt # 依次獲取畫布和繪圖區(qū)并創(chuàng)建 Axes3D 對象 fig = plt.figure() ax = fig.gca(projection='3d') # 數(shù)據(jù)坐標(biāo) z = np.linspace(0, 15, 1000) x = np.sin(z) y = np.cos(z) # 繪制線性圖 ax.plot(x, y, z) plt.show()
以上三種方法運(yùn)行結(jié)果均為下圖:

cmap 與 colorbar
默認(rèn)情況下,散點(diǎn)圖、線性圖、曲面圖等將以純色著色,但可以通過提供 cmap 參數(shù)支持顏色映射。cmap 參數(shù)用于設(shè)置一些特殊的顏色組合,如漸變色等。
如果使用了 cmap 參數(shù),則可以使用 pyplot.colorbar() 函數(shù)來繪制一個色條,即顏色對照條。
基本語法:matplotlib.pyplot.colorbar([mappable=None, cax=None, ax=None, **kw])
部分參數(shù)解釋如下表,其他參數(shù),如長度,寬度等請參考官方文檔。
| 參數(shù) | 描述 |
| mappable | 要設(shè)置色條的圖像對象,該參數(shù)對于 Figure.colorbar 方法是必需的,但對于 pyplot.colorbar 函數(shù)是可選的 |
| cax | 可選項(xiàng),要繪制色條的軸 |
| ax | 可選項(xiàng),設(shè)置色條的顯示位置,通常在一個畫布上有多個子圖時使用 |
| **kw | 可選項(xiàng),其他關(guān)鍵字參數(shù),參考官方文檔 |
3D 線性圖:Axes3D.plot
基本方法:Axes3D.plot(xs, ys[, zs, zdir='z', *args, **kwargs])
| 參數(shù) | 描述 |
| xs | 一維數(shù)組,點(diǎn)的 x 軸坐標(biāo) |
| ys | 一維數(shù)組,點(diǎn)的 y 軸坐標(biāo) |
| zs | 一維數(shù)組,可選項(xiàng),點(diǎn)的 z 軸坐標(biāo) |
| zdir | 可選項(xiàng),在 3D 軸上繪制 2D 數(shù)據(jù)時,數(shù)據(jù)必須以 xs,ys 的形式傳遞 ,若此時將 zdir 設(shè)置為 ‘y’,數(shù)據(jù)將會被繪制到 x-z 軸平面上,默認(rèn)為 ‘z’ |
| **kwargs | 其他關(guān)鍵字參數(shù),可選項(xiàng),可參見 matplotlib.axes.Axes.plot |
import numpy as np
import matplotlib.pyplot as plt
# 設(shè)置中文顯示
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 依次獲取畫布和繪圖區(qū)并創(chuàng)建 Axes3D 對象
fig = plt.figure()
ax = fig.gca(projection='3d')
# 第一條3D線性圖數(shù)據(jù)
theta = np.linspace(-4 * np.pi, 4 * np.pi, 100)
z1 = np.linspace(-2, 2, 100)
r = z1**2 + 1
x1 = r * np.sin(theta)
y1 = r * np.cos(theta)
# 第二條3D線性圖數(shù)據(jù)
z2 = np.linspace(-3, 3, 100)
x2 = np.sin(z2)
y2 = np.cos(z2)
# 繪制3D線性圖
ax.plot(x1, y1, z1, color='b', label='3D 線性圖一')
ax.plot(x2, y2, z2, color='r', label='3D 線性圖二')
# 設(shè)置標(biāo)題、軸標(biāo)簽、圖例,也可以直接使用 plt.title、plt.xlabel、plt.legend...
ax.set_title('繪制 3D 線性圖示例', pad=15, fontsize='12')
ax.set_xlabel('x 軸', color='r', fontsize='12')
ax.set_ylabel('y 軸', color='g', fontsize='12')
ax.set_zlabel('z 軸', color='b', fontsize='12')
ax.legend()
plt.show()
3D 散點(diǎn)圖:Axes3D.scatter
基本方法:Axes3D.scatter(xs, ys[, zs=0, zdir='z', s=20, c=None, depthshade=True, *args, **kwargs])
| 參數(shù) | 描述 |
| xs | 一維數(shù)組,點(diǎn)的 x 軸坐標(biāo) |
| ys | 一維數(shù)組,點(diǎn)的 y 軸坐標(biāo) |
| zs | 一維數(shù)組,可選項(xiàng),點(diǎn)的 z 軸坐標(biāo) |
| zdir | 可選項(xiàng),在 3D 軸上繪制 2D 數(shù)據(jù)時,數(shù)據(jù)必須以 xs,ys 的形式傳遞 若此時將 zdir 設(shè)置為 ‘y’,數(shù)據(jù)將會被繪制到 x-z 軸平面上,默認(rèn)為 ‘z’, |
| s | 標(biāo)量或數(shù)組類型,可選項(xiàng),標(biāo)記的大小,默認(rèn) 20 |
| c | 標(biāo)記的顏色,可選項(xiàng),可以是單個顏色或者一個顏色列表 支持英文顏色名稱及其簡寫、十六進(jìn)制顏色碼等,更多顏色示例參見官網(wǎng) Color Demo |
| depthshade | bool 值,可選項(xiàng),默認(rèn) True,是否為散點(diǎn)標(biāo)記著色以提供深度外觀 |
| **kwargs | 其他關(guān)鍵字參數(shù),可選項(xiàng),可參見 scatter |
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 依次獲取畫布和繪圖區(qū)并創(chuàng)建 Axes3D 對象
fig = plt.figure()
ax = fig.gca(projection='3d')
n = 100
def randrange(n, vmin, vmax):
return (vmax - vmin)*np.random.rand(n) + vmin
'''
定義繪制 n 個隨機(jī)點(diǎn),設(shè)置每一組數(shù)據(jù)點(diǎn)的樣式和范圍
x軸數(shù)據(jù)位于[23,32]區(qū)間,y軸數(shù)據(jù)位于[0,100]區(qū)間,z軸數(shù)據(jù)位于[zlow,zhigh]區(qū)間
'''
for m, zlow, zhigh in [('o', -50, -25), ('^', -30, -5)]:
xs = randrange(n, 23, 32)
ys = randrange(n, 0, 100)
zs = randrange(n, zlow, zhigh)
ax.scatter(xs, ys, zs, marker=m)
# 設(shè)置標(biāo)題、軸標(biāo)簽、圖例,也可以直接使用 plt.title、plt.xlabel...
ax.set_title('繪制 3D 散點(diǎn)圖示例', pad=15, fontsize='12')
ax.set_xlabel('x 軸', color='b')
ax.set_ylabel('y 軸', color='b')
ax.set_zlabel('z 軸', color='b')
plt.show()
3D 線框圖:Axes3D.plot_wireframe
基本方法:Axes3D.plot_wireframe(X, Y, Z[, *args, **kwargs])
| 參數(shù) | 描述 |
| X | 二維數(shù)組,x 軸數(shù)據(jù) |
| Y | 二維數(shù)組,y 軸數(shù)據(jù) |
| Z | 二維數(shù)組,z 軸數(shù)據(jù) |
| **kwargs | 其他關(guān)鍵字參數(shù),可選項(xiàng),如線條樣式顏色等,可參見 Line3DCollection |
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 獲取 figure 畫布并通過子圖創(chuàng)建 Axes3D 對象
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 定義Z軸坐標(biāo)的生成方法
def f(m, n):
return np.sin(np.sqrt(m ** 2 + n ** 2))
# 設(shè)置3D線框圖數(shù)據(jù)
x = np.linspace(-6, 6, 30)
y = np.linspace(-6, 6, 30)
# 生成網(wǎng)格點(diǎn)坐標(biāo)矩陣,該方法在系列文章八中有具體介紹
X, Y = np.meshgrid(x, y)
Z = f(X, Y)
# 繪制3D線框圖
ax.plot_wireframe(X, Y, Z, color='c')
# 設(shè)置標(biāo)題、軸標(biāo)簽、圖例,也可以直接使用 plt.title、plt.xlabel...
ax.set_title('繪制 3D 線框圖示例', pad=15, fontsize='12')
ax.set_xlabel('x 軸')
ax.set_ylabel('y 軸')
ax.set_zlabel('z 軸')
plt.show()
關(guān)于Python如何實(shí)現(xiàn)3D繪圖方式就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
網(wǎng)頁題目:Python如何實(shí)現(xiàn)3D繪圖方式-創(chuàng)新互聯(lián)
本文URL:http://www.chinadenli.net/article28/docgcp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、虛擬主機(jī)、品牌網(wǎng)站設(shè)計(jì)、營銷型網(wǎng)站建設(shè)、全網(wǎng)營銷推廣、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容