gpt4 book ai didi

python - 填充 3d 绘图 python

转载 作者:行者123 更新时间:2023-11-28 21:43:37 25 4
gpt4 key购买 nike

我想在 matplotlib 中制作 3D 图。我有 6 个 x、y 和 z 坐标点。我绘制了它们并得到了这个:

3D Plot without filling

但我的目标是在蓝线之间的表面填充颜色。

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

plt.rcParams['svg.fonttype'] = 'none' # during export plots as .svg files, text is exported as text (default text is exported as curves)

data = np.loadtxt('D:\PyCharm\File1.txt', skiprows=1)

x = data[:, 0]
y = data[:, 1]
z = data[:, 2]

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

ax.plot(x, y, z)

axes = plt.gca()
axes.set_xlim(5712000, 5716000)
axes.set_ylim(5576000, 5579000)
axes.set_zlim(-1000, -600)
axes.set_xlabel('X')
axes.set_ylabel('Y')
axes.set_zlabel('Z')

plt.tight_layout()
plt.show()

我尝试了三面图:

ax.plot_trisurf(x, y, z)

但是形状不正确:

Tri-surface plot

编辑:关于我的数据:它是文本文件,看起来像:

X   Y   Z
5714397 5576607 -1008
5713159 5577871 -999
5713465 5577909 -1014
5714156 5577428 -1022
5714410 5577789 -1035
5715057 5577407 -1036
5714397 5576607 -1008

第二行和最后一行是相同的,但我尝试使用另一个文件,我在其中删除了最后一行。剧情同上。

最佳答案

您正在使用 plot 绘制顶点。正如预期的那样,这会给你一条线。为了获得填充的多边形,请使用 Poly3DCollection

from mpl_toolkits.mplot3d import Axes3D
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
import matplotlib.pyplot as plt
import numpy as np

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

x,y,z = np.loadtxt('D:\PyCharm\File1.txt', skiprows=1, unpack=True)

verts = [zip(x, y,z)]
ax.add_collection3d(Poly3DCollection(verts))

ax.set_xlim(5712000, 5716000)
ax.set_ylim(5576000, 5579000)
ax.set_zlim(-1000, -600)
plt.show()

关于python - 填充 3d 绘图 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41958373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com