亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python如何實現3D繪圖方式

發布時間:2020-06-29 11:25:09 來源:億速云 閱讀:296 作者:清晨 欄目:編程語言

這篇文章將為大家詳細講解有關Python如何實現3D繪圖方式,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

Axes3D 對象創建方法一:Axes3D(fig)

在 Matplotlib 1.0.0 版本中,繪制 3D 圖需要先導入 Axes3D 包,獲取 figure 畫布對象 fig 后,通過 Axes3D(fig) 方法來創建 Axes3D 對象,具體方法如下:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 獲取 figure 畫布并創建 Axes3D 對象
fig = plt.figure()
ax = Axes3D(fig)
# 數據坐標
z = np.linspace(0, 15, 1000)
x = np.sin(z)
y = np.cos(z)
# 繪制線性圖
ax.plot(x, y, z)
plt.show()

Axes3D 對象創建方法二:add_subplot

在 Matplotlib 3.2.0 版本中,繪制 3D 圖可以通過創建子圖,然后指定 projection 參數 為 3d 即可,返回的 ax 為 Axes3D 對象,以下兩種方法均可:

import numpy as np
import matplotlib.pyplot as plt
# 獲取 figure 畫布并通過子圖創建 Axes3D 對象
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 數據坐標
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
# 通過子圖創建 Axes3D 對象
ax = plt.subplot(111, projection='3d')
# 數據坐標
z = np.linspace(0, 15, 1000)
x = np.sin(z)
y = np.cos(z)
# 繪制線性圖
ax.plot(x, y, z)
plt.show()

【01x03】Axes3D 對象創建方法三:gca

除了以上兩種方法以外,還可以先獲取畫布對象 fig,再通過 fig.gca() 方法獲取當前繪圖區(gca = Get Current Axes),然后指定 projection 參數 為 3d 即可,返回的 ax 為 Axes3D 對象。

import numpy as np
import matplotlib.pyplot as plt
# 依次獲取畫布和繪圖區并創建 Axes3D 對象
fig = plt.figure()
ax = fig.gca(projection='3d')
# 數據坐標
z = np.linspace(0, 15, 1000)
x = np.sin(z)
y = np.cos(z)
# 繪制線性圖
ax.plot(x, y, z)
plt.show()

以上三種方法運行結果均為下圖:

Python如何實現3D繪圖方式

cmap 與 colorbar

默認情況下,散點圖、線性圖、曲面圖等將以純色著色,但可以通過提供 cmap 參數支持顏色映射。cmap 參數用于設置一些特殊的顏色組合,如漸變色等。

如果使用了 cmap 參數,則可以使用 pyplot.colorbar() 函數來繪制一個色條,即顏色對照條。

基本語法:matplotlib.pyplot.colorbar([mappable=None, cax=None, ax=None, **kw])

部分參數解釋如下表,其他參數,如長度,寬度等請參考官方文檔。

參數 描述
mappable 要設置色條的圖像對象,該參數對于 Figure.colorbar 方法是必需的,但對于 pyplot.colorbar 函數是可選的
cax 可選項,要繪制色條的軸
ax可選項,設置色條的顯示位置,通常在一個畫布上有多個子圖時使用
**kw 可選項,其他關鍵字參數,參考官方文檔

3D 線性圖:Axes3D.plot

基本方法:Axes3D.plot(xs, ys[, zs, zdir='z', *args, **kwargs])

參數 描述
xs 一維數組,點的 x 軸坐標
ys 一維數組,點的 y 軸坐標
zs一維數組,可選項,點的 z 軸坐標
zdir

可選項,在 3D 軸上繪制 2D 數據時,數據必須以 xs,ys 的形式傳遞

,若此時將 zdir 設置為 ‘y’,數據將會被繪制到 x-z 軸平面上,默認為 ‘z’

**kwargs
 其他關鍵字參數,可選項,可參見 matplotlib.axes.Axes.plot
import numpy as np
import matplotlib.pyplot as plt
# 設置中文顯示
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 依次獲取畫布和繪圖區并創建 Axes3D 對象
fig = plt.figure()
ax = fig.gca(projection='3d')
# 第一條3D線性圖數據
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線性圖數據
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 線性圖二')
# 設置標題、軸標簽、圖例,也可以直接使用 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()

Python如何實現3D繪圖方式

3D 散點圖:Axes3D.scatter

基本方法:Axes3D.scatter(xs, ys[, zs=0, zdir='z', s=20, c=None, depthshade=True, *args, **kwargs])

參數 描述
xs一維數組,點的 x 軸坐標
ys一維數組,點的 y 軸坐標
zs 一維數組,可選項,點的 z 軸坐標
zdir

可選項,在 3D 軸上繪制 2D 數據時,數據必須以 xs,ys 的形式傳遞

若此時將 zdir 設置為 ‘y’,數據將會被繪制到 x-z 軸平面上,默認為 ‘z’,

標量或數組類型,可選項,標記的大小,默認 20
c

 標記的顏色,可選項,可以是單個顏色或者一個顏色列表

支持英文顏色名稱及其簡寫、十六進制顏色碼等,更多顏色示例參見官網 Color Demo

depthshadebool 值,可選項,默認 True,是否為散點標記著色以提供深度外觀
**kwargs 其他關鍵字參數,可選項,可參見 scatter
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 依次獲取畫布和繪圖區并創建 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 個隨機點,設置每一組數據點的樣式和范圍
x軸數據位于[23,32]區間,y軸數據位于[0,100]區間,z軸數據位于[zlow,zhigh]區間
'''
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)
# 設置標題、軸標簽、圖例,也可以直接使用 plt.title、plt.xlabel...
ax.set_title('繪制 3D 散點圖示例', pad=15, fontsize='12')
ax.set_xlabel('x 軸', color='b')
ax.set_ylabel('y 軸', color='b')
ax.set_zlabel('z 軸', color='b')
plt.show()

Python如何實現3D繪圖方式

3D 線框圖:Axes3D.plot_wireframe

基本方法:Axes3D.plot_wireframe(X, Y, Z[, *args, **kwargs])

參數 描述
X二維數組,x 軸數據
Y 二維數組,y 軸數據
Z 二維數組,z 軸數據
**kwargs 其他關鍵字參數,可選項,如線條樣式顏色等,可參見 Line3DCollection
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 獲取 figure 畫布并通過子圖創建 Axes3D 對象
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 定義Z軸坐標的生成方法
def f(m, n):
    return np.sin(np.sqrt(m ** 2 + n ** 2))
# 設置3D線框圖數據
x = np.linspace(-6, 6, 30)
y = np.linspace(-6, 6, 30)
# 生成網格點坐標矩陣,該方法在系列文章八中有具體介紹
X, Y = np.meshgrid(x, y)
Z = f(X, Y)
# 繪制3D線框圖
ax.plot_wireframe(X, Y, Z, color='c')
# 設置標題、軸標簽、圖例,也可以直接使用 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()

Python如何實現3D繪圖方式

關于Python如何實現3D繪圖方式就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

贵南县| 渑池县| 万源市| 板桥市| 平昌县| 常山县| 昭苏县| 淮滨县| 横峰县| 屏东县| 扶余县| 东宁县| 镇平县| 东源县| 丁青县| 凤翔县| 那坡县| 楚雄市| 贵南县| 阳江市| 池州市| 万载县| 梁平县| 五华县| 栖霞市| 虹口区| 合水县| 邵阳市| 天峻县| 福清市| 交城县| 武乡县| 华坪县| 临泉县| 石棉县| 乳山市| 临夏县| 龙胜| 黎川县| 贡嘎县| 临安市|