gpt4 book ai didi

python - matplotlib 中的 3d 表面

转载 作者:太空宇宙 更新时间:2023-11-03 11:23:53 25 4
gpt4 key购买 nike

我引用了 matplotlib.org 和很多线程,但我无法绘制 3d 表面。我能够绘制 3d 散点图,但是当我尝试绘制 3d 表面时,它会因许多不同的错误而中断。我修复了错误,但我得到了新的错误。与它战斗了 2 天后,我相信我对 matplotlib 3d 曲面的理解是错误的。

我想绘制 SA,FZ,FY

其中SA是X,FZ是Y,FY是Z

 while y<Last_Row:
if 100 < Temp_AVG_Dict[y] and Temp_AVG_Dict[y] < 140 and abs(Camber[y])<5 and 24.5<Speed[y] and Speed[y]<25.5:
y = y + 1

SA[SArow:]=[Run_50_sheet.cell_value( y , SA_Column)]
SArow = SArow + 1

FY[FYrow:] = [Run_50_sheet.cell_value( y , FY_Column)]
FYrow = FYrow + 1

FZ[FZrow:] = [Run_50_sheet.cell_value( y , FZ_Column)]
FZrow = FZrow + 1

Z.insert(SArow,[SA[SArow-1], FZ[FZrow-1], FY[FYrow-1]])

else:
y=y+1

Z= np.array(Z)


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

下面这一行是我认为我出错的地方。 X、Y、Z 都需要是二维数组,但我不确定需要输入的值。

我尝试按照 [SA,FZ]、[FZ,FY] 和 [SA,FY] 的顺序制作二维数组,但失败了我还尝试使 SA 和 FY 等于 1..n,但这也不起作用。

ax.plot_surface( SA, FY ,Z)
plt.show()

二维数组应该由什么值组成?感谢您的帮助。

最佳答案

查看 3d 表面的示例代码:http://matplotlib.org/examples/mplot3d/surface3d_demo.html

首先,您必须创建两个规则网格 X 和 Y(二维数组)以使用 plot_surface 进行绘图,如下所示:

X = np.arange(-5, 5, 0.25) # X, Y are 1d arrays
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y) # Now X, Y are 2d arrays

尝试制作一维数组的网格 FA(如果是 x),FY(如果是 y):

X, Y = np.meshgrid(FA, FY)

然后,创建表示表面值的二维数组 Z,即

Z = np.sin(np.sqrt(X**2 + Y**2))

您的 FZ 数组必须是二维的,并且具有与 X, Y 数组相同的形状。

剧情之后:

ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,
linewidth=0, antialiased=False)

enter image description here

如果您的网格不规则,请查找 plot_trisurf:http://matplotlib.org/examples/mplot3d/trisurf3d_demo.html

关于python - matplotlib 中的 3d 表面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37754389/

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