手機版
你好,游客 登錄 注冊
背景:
閱讀新聞

Python教程:matplotlib中的曲面和三維等高線

[日期:2020-01-06] 來源:Linux公社  作者:醉落紅塵 [字體: ]

Python中想要使用matplotlib使用顏色圖,線框和輪廓繪制表面。 像這樣:

Python教程:matplotlib中的曲面和3D輪廓

請注意,不是與xy平行的平面中的contour,而是關于圖像中3D和白色的contour。

如果用幼稚的方法繪制所有這些東西,我將不到輪廓(參見下面的代碼和圖像)。

如果在表面添加透明度,我可以看到contour但它看起來真的很混亂(參見下面的代碼和圖像)

import numpy as np
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")
X, Y = np.mgrid[-1:1:30j, -1:1:30j]
Z = np.sin(np.pi*X)*np.sin(np.pi*Y)
ax.plot_surface(X, Y, Z, cmap="autumn_r", lw=0.5, rstride=1, cstride=1)
ax.contour(X, Y, Z, 10, lw=3, cmap="autumn_r", linestyles="solid", offset=-1)
ax.contour(X, Y, Z, 10, lw=3, colors="k", linestyles="solid")
plt.show()

Python教程:matplotlib中的曲面和3D輪廓

問題:有沒有辦法在matplotlib中獲得此結果? 但是,陰影不是必需的。

如果將contour的Alpha值設置為較小的值,則看起來可能不太混亂。

import numpy as np
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")
X, Y = np.mgrid[-1:1:30j, -1:1:30j]
Z = np.sin(np.pi*X)*np.sin(np.pi*Y)
ax.plot_surface(X, Y, Z, cmap="autumn_r", lw=0.5, rstride=1, cstride=1, alpha=0.5)
ax.contour(X, Y, Z, 10, lw=3, cmap="autumn_r", linestyles="solid", offset=-1)
ax.contour(X, Y, Z, 10, lw=3, colors="k", linestyles="solid")
plt.show()

如果您嘗試這樣做,顯然是一個錯誤

旋轉一下,你會看到contour在不該消失的地方消失了

import numpy as np
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")
X, Y = np.mgrid[-1:1:30j, -1:1:30j]
Z = np.sin(np.pi*X)*np.sin(np.pi*Y)

ax.plot_surface(X, Y, Z, cmap="autumn_r", lw=0, rstride=1, cstride=1)
ax.contour(X, Y, Z+1, 10, lw=3, colors="k", linestyles="solid")
plt.show()

我認為您想將contour設置為偏移量:

ax.contour(X, Y, Z, 10, offset=-1, lw=3, colors="k", linestyles="solid", alpha=0.5)

Python教程:matplotlib中的曲面和3D輪廓

偏移:如果指定,則在垂直于zdir的平面上在該位置上繪制輪廓線的投影

注意,默認情況下zdir ='z',但是可以通過相應地設置zdir來在x或y方向上投影。

更多Python相關信息見Python 專題頁面 http://www.okbuvi.live/topicnews.aspx?tid=17

Linux公社的RSS地址http://www.okbuvi.live/rssFeed.aspx

本文永久更新鏈接地址http://www.okbuvi.live/Linux/2020-01/161946.htm

linux
相關資訊       Matplotlib 
本文評論   查看全部評論 (0)
表情: 表情 姓名: 字數

       

評論聲明
  • 尊重網上道德,遵守中華人民共和國的各項有關法律法規
  • 承擔一切因您的行為而直接或間接導致的民事或刑事法律責任
  • 本站管理人員有權保留或刪除其管轄留言中的任意內容
  • 本站有權在網站內轉載或引用您的評論
  • 參與本評論即表明您已經閱讀并接受上述條款
海口彩票论坛