python 利用matplotlib在3D空間繪制二次拋物面的案例
圖形預(yù)覽:

0、import
import numpy as np from matplotlib import pyplot as plt from mpl_toolkits.mplot3d import Axes3D
1、開口向上的拋物面
fig = plt.figure(figsize=(9,6),
facecolor='khaki'
)
ax = fig.gca(projection='3d')
# 二元函數(shù)定義域平面集
x = np.linspace(start=-3,
stop=3,
num=100
)
y = np.linspace(start=-3,
stop=3,
num=100
)
X, Y = np.meshgrid(x, y) # 網(wǎng)格數(shù)據(jù)
Z = np.power(X, 2) + np.power(Y, 2) # 二元函數(shù) z = x**2 + y**2
# 繪圖
surf = ax.plot_surface(X=X,
Y=Y,
Z=Z,
rstride=2, # row stride, 行跨度
cstride=2, # column stride, 列跨度
color='r',
linewidth=0.5,
)
# 調(diào)整視角
ax.view_init(elev=7, # 仰角
azim=30 # 方位角
)
# 顯示圖形
plt.show()
圖形:

2、開口向下的拋物面
fig = plt.figure(figsize=(9,6),
facecolor='khaki'
)
ax = fig.gca(projection='3d')
# 二元函數(shù)定義域平面集
x = np.linspace(start=-3,
stop=3,
num=100
)
y = np.linspace(start=-3,
stop=3,
num=100
)
X, Y = np.meshgrid(x, y) # 網(wǎng)格數(shù)據(jù)
Z = np.power(X, 2) + np.power(Y, 2) # 二元函數(shù) z = x**2 + y**2
# 繪圖
surf = ax.plot_surface(X=X,
Y=Y,
Z=-Z,
rstride=2, # row stride, 行跨度
cstride=2, # column stride, 列跨度
color='g',
linewidth=0.5,
)
# 調(diào)整視角
ax.view_init(elev=7, # 仰角
azim=30 # 方位角
)
# 顯示圖形
plt.show()
圖形:

3、用多子區(qū)顯示不同拋物面
fig = plt.figure(figsize=(24, 16),
facecolor='khaki'
)
# 二元函數(shù)定義域平面集
x = np.linspace(start=-3,
stop=3,
num=100
)
y = np.linspace(start=-3,
stop=3,
num=100
)
X, Y = np.meshgrid(x, y) # 網(wǎng)格數(shù)據(jù)
Z = np.power(X, 2) + np.power(Y, 2) # 二元函數(shù) z = x**2 + y**2
# -------------------------------- subplot(221) --------------------------------
ax = fig.add_subplot(221, projection='3d')
# 開口向上的拋物面
surf = ax.plot_surface(X=X,
Y=Y,
Z=Z,
rstride=2, # row stride, 行跨度
cstride=2, # column stride, 列跨度
color='r',
linewidth=0.5,
)
# -------------------------------- subplot(223) --------------------------------
ax = fig.add_subplot(223, projection='3d')
# 開口向下的拋物面
surf = ax.plot_surface(X=X,
Y=Y,
Z=-Z,
rstride=2, # row stride, 行跨度
cstride=2, # column stride, 列跨度
color='g',
linewidth=0.5,
)
# -------------------------------- subplot(22, (2,4)) --------------------------------
ax = plt.subplot2grid(shape=(2,2),
loc=(0, 1),
rowspan=2,
projection='3d'
)
# 開口向上的拋物面
surf1 = ax.plot_surface(X=X,
Y=Y,
Z=Z,
rstride=2, # row stride, 行跨度
cstride=2, # column stride, 列跨度
color='r',
linewidth=0.5,
)
# 開口向下的拋物面
surf2 = ax.plot_surface(X=X,
Y=Y,
Z=-Z,
rstride=2, # row stride, 行跨度
cstride=2, # column stride, 列跨度
color='g',
linewidth=0.5,
)
# 調(diào)整視角
ax.view_init(elev=7, # 仰角
azim=30 # 方位角
)
# -------------------------------- fig --------------------------------
# 調(diào)整子區(qū)布局
fig.subplots_adjust(wspace=0.1, # width space
hspace=0.15 # height space
)
# 顯示圖形
plt.show()
圖形:

軟件版本:

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
使用 setuptools 在 Python 中安裝 egg 
Eggs 是 Python 中以前使用的一種分發(fā)格式,它包含特定項(xiàng)目所需的信息,從依賴項(xiàng)到環(huán)境變量,在本文中,我們將討論如何在 Python 中安裝 egg 文件,以及可用于實(shí)現(xiàn)此操作的工具,感興趣的朋友一起看看吧2023-08-08
Python assert關(guān)鍵字原理及實(shí)例解析
這篇文章主要介紹了Python assert關(guān)鍵字原理及實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
Python2.7實(shí)現(xiàn)多進(jìn)程下開發(fā)多線程示例
這篇文章主要為大家詳細(xì)介紹了Python2.7實(shí)現(xiàn)多進(jìn)程下開發(fā)多線程示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05
python turtle工具繪制四葉草的實(shí)例分享
在本篇文章里小編給各位整理的是關(guān)于python turtle工具繪制四葉草的實(shí)例分享,有興趣的朋友們可以跟著學(xué)習(xí)下。2020-02-02
Python中使用logging模塊代替print(logging簡(jiǎn)明指南)
這篇文章主要介紹了Python中使用logging模塊代替print的好處說明,主旨是logging模塊簡(jiǎn)明指南,logging模塊的使用方法介紹,需要的朋友可以參考下2014-07-07
基于Python實(shí)現(xiàn)復(fù)刻人生重開模擬器
人生重開模擬器是由VickScarlet上傳至GitHub的一款簡(jiǎn)單的文字網(wǎng)頁游戲。本文將用Python復(fù)刻一下這個(gè)游戲,感興趣的小伙伴可以嘗試一下2022-10-10
Python實(shí)現(xiàn)求一個(gè)集合所有子集的示例
今天小編就為大家分享一篇Python 實(shí)現(xiàn)求一個(gè)集合所有子集的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05

