Python 使用numpy阵列在matplotlib中绘制二维(4D数据)等高线

Python 使用numpy阵列在matplotlib中绘制二维(4D数据)等高线,python,numpy,matplotlib,contour,Python,Numpy,Matplotlib,Contour,我基本上有一个电势“V”,它取决于三个坐标——x,y和z。目标是绘制变化x和y(即固定z)电势的二维轮廓图像。我尝试这样做:1)导入x、y、z、V的数据并单独存储。2) 使用“网格网格”创建坐标的网格数据。3) 绘制固定“z”的轮廓 我对前两部分似乎没有什么问题,但我怀疑我不太了解第3部分的语法。以下是我尝试的代码: import numpy as np import matplotlib.pyplot as plt filename = 'x.txt' data=np.loadtxt(fil

我基本上有一个电势“V”,它取决于三个坐标——x,y和z。目标是绘制变化x和y(即固定z)电势的二维轮廓图像。我尝试这样做:1)导入x、y、z、V的数据并单独存储。2) 使用“网格网格”创建坐标的网格数据。3) 绘制固定“z”的轮廓

我对前两部分似乎没有什么问题,但我怀疑我不太了解第3部分的语法。以下是我尝试的代码:

import numpy as np
import matplotlib.pyplot as plt

filename = 'x.txt'
data=np.loadtxt(filename)
x = np.loadtxt(filename,usecols=0)
filename = 'y.txt'
data=np.loadtxt(filename)
y = np.loadtxt(filename,usecols=0)
filename = 'z.txt'
data=np.loadtxt(filename)
z = np.loadtxt(filename,usecols=0)
X,Y,Z = np.meshgrid(x,y,z)
filename = 'V.txt'
data=np.loadtxt(filename)
v = np.loadtxt(filename)
v = v.reshape(len(x),len(y),len(z))

plot.contour

最后一行是不完整的,因为我还没有完全弄清楚如何指定固定的“z”值并绘制二维轮廓。我相信代码的上半部分完成了我前面概述的工作,但我可能也有错误。我将非常感谢您对这个问题的任何帮助。为了重申这个问题,基本上我有x,y,z和V的数据(这取决于所有3个坐标),我打算为一个固定的z值绘制一个V的二维轮廓。

你只需要
X0,Y0=meshgrid(x,y)
因为你在做切片,然后取一个与你感兴趣的z对应的
V0
部分,然后
等高线(X0,Y0,V0)
plt。等高线(x,y,v[:,:,index])
就是你想要的。您可能需要确保您的
v.restrape
也是正确的方法。@JodyKlymak有趣。第一部分是有意义的,并且简化了很多事情。你能解释一下第二部分吗?这里的重塑工作不符合预期吗?(也就是说,它只有x*y*z的尺寸)?当然,重塑可以按预期工作,但数据可以以不同的顺序存储。i、 e.V[nz,ny,nx]也经常被使用……你只需要
X0,Y0=meshgrid(x,y)
,因为你在做切片,然后取一个
V0
部分,对应于你感兴趣的Z,然后
轮廓(X0,Y0,V0)
plt。轮廓(x,y,V[:,:,index])
就是你想要的。您可能需要确保您的
v.restrape
也是正确的方法。@JodyKlymak有趣。第一部分是有意义的,并且简化了很多事情。你能解释一下第二部分吗?这里的重塑工作不符合预期吗?(也就是说,它只有x*y*z的尺寸)?当然,重塑可以按预期工作,但数据可以以不同的顺序存储。i、 e.V[nz,ny,nx]也经常被使用。。。