Python 使用meshgrid将X、Y、Z三元组转换为matplotlib中曲面打印的三个二维阵列
我是Python新手,所以请耐心等待。谢谢你的帮助 我拥有的:三个1D列表(xr,yr,zr),一个包含x值,另外两个y值和z值Python 使用meshgrid将X、Y、Z三元组转换为matplotlib中曲面打印的三个二维阵列,python,matplotlib,surface,mplot3d,Python,Matplotlib,Surface,Mplot3d,我是Python新手,所以请耐心等待。谢谢你的帮助 我拥有的:三个1D列表(xr,yr,zr),一个包含x值,另外两个y值和z值 我想做什么:在matplotlib中创建三维等高线图 我意识到我需要使用meshgrid函数将三个1D列表转换为三个2D列表 以下是我目前掌握的情况: xr = np.asarray(xr) yr = np.asarray(yr) zr = np.asarray(zr) X, Y = np.meshgrid(xr,yr) znew = np.array([zr f
我想做什么:在matplotlib中创建三维等高线图 我意识到我需要使用meshgrid函数将三个1D列表转换为三个2D列表 以下是我目前掌握的情况:
xr = np.asarray(xr)
yr = np.asarray(yr)
zr = np.asarray(zr)
X, Y = np.meshgrid(xr,yr)
znew = np.array([zr for x,y in zip(np.ravel(X), np.ravel(Y))])
Z = znew.reshape(X.shape)
运行此命令会导致以下错误(对于上面输入的最后一行):
我在stackoverflow周围挖掘,并尝试使用有类似问题的人的建议。以下是我从这些建议中得到的错误:
将最后一行更改为:
Z = znew.reshape(X.shape[0])
Z = znew.reshape(X.shape[0], len(znew))
给出了相同的错误
将最后一行更改为:
Z = znew.reshape(X.shape[0])
Z = znew.reshape(X.shape[0], len(znew))
给出了错误:
Shape of x does not match that of z: found (294, 294) instead of (294, 86436).
an integer is required
将其更改为:
Z = znew.reshape(X.shape, len(znew))
给出了错误:
Shape of x does not match that of z: found (294, 294) instead of (294, 86436).
an integer is required
有什么想法吗?好吧,下面的示例代码适合我
import numpy as np
import matplotlib.pyplot as plt
xr = np.linspace(-20, 20, 100)
yr = np.linspace(-25, 25, 110)
X, Y = np.meshgrid(xr, yr)
#Z = 4*X**2 + Y**2
zr = []
for i in range(0, 110):
y = -25.0 + (50./110.)*float(i)
for k in range(0, 100):
x = -20.0 + (40./100.)*float(k)
v = 4.0*x*x + y*y
zr.append(v)
Z = np.reshape(zr, X.shape)
print(X.shape)
print(Y.shape)
print(Z.shape)
plt.contour(X, Y, Z)
plt.show()
有合适的尺寸吗?基本上,您必须将
nx
作为xr
的长度,ny
作为yr
的长度,以及nx*ny
作为zr
的长度。基本上,请看