填充3D散点的最佳方法?(MatPlotLib,第3.10页)

lbsnaicq  于 2023-01-21  发布在  其他
关注(0)|答案(1)|浏览(109)

我有以下Python 3.10脚本,根据MatPlotLib 3D Scatter tutorial,使用MatPlotLib生成简单的3D散点图:

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(projection='3d')

X = [1, 3, 2]
Y = [1, 1, 2]
Z = [2, 2, 2]

ax.scatter(X, Y, Z)

ax.set_xlim(0, 4)
ax.set_ylim(0, 3)
ax.set_zlim(1.9, 2.1)

ax.set_xlabel('X Axis')
ax.set_ylabel('Y Axis')
ax.set_zlabel('Z Axis')

plt.show()

上面的脚本按预期工作,我得到了正确的输出:

然而,我想知道是否有可能连接和填充分散点,创建各种“面”,并为它提供颜色。在这种情况下,它将是这样的:

我浏览了其他的MatPlotLib教程,特别是3D Surface Colormap图和3D Surface Solid Color图,但是我很困惑它们是如何实现的。
从我尝试运行示例所收集到的信息来看,Z轴数据集是一个多维数组(如果我只是提供了一个单一的列表或np数组,interperter会抛出一个错误)。我真的不明白为什么Z轴数据集需要是一个多维数组,我可以想象,实际的数据颜色是通过color参数提供给scatter函数调用的。
我所尝试做的事情在MatPlotLib中是否可行?是否有更好的方法来实现这一点?
感谢阅读我的帖子,任何指导都是赞赏!

6yt4nkrj

6yt4nkrj1#

您正在搜索的内容是plot_trisurf

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(projection="3d")

X = [1, 3, 2]
Y = [1, 1, 2]
Z = [2, 2, 2]

ax.scatter3D(X, Y, Z)
ax.plot_trisurf(X, Y, Z)

plt.show()

相关问题