手机版
你好,游客 登录 注册
背景:
阅读新闻

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 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=17

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址https://www.linuxidc.com/Linux/2020-01/161946.htm

linux
相关资讯       Matplotlib 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款