我正在尝试使用具有以下格式的文件的 matplotlib 进行等高线图:
x1 y1 z1
x2 y2 z2
ETC
我可以用 numpy.loadtxt 加载它来获取向量。到目前为止,没有麻烦。
我阅读这篇文章是为了学习如何绘图,并且可以通过复制粘贴来重现它,所以我确信我的安装没有任何问题:
http://matplotlib.org/examples/pylab_examples/griddata_demo.html
我知道我必须输入 x 和 y 作为向量和 z 作为数组,这可以用 griddata 来完成。这也是我在这个网站上找到的。
文档说:
zi = griddata(x,y,z,xi,yi) 将 z = f*(*x, y) 形式的曲面拟合到(通常)非均匀间隔向量 (x, y, z) 中的数据。griddata() 在 (xi, yi) 指定的点处对该曲面进行插值以生成 zi。xi 和 yi 必须描述一个规则网格,可以是 1D 或 2D,但必须是单调递增的。
为了示例,我编写了以下代码:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.mlab as ml
x=np.linspace(1.,10.,20)
y=np.linspace(1.,10.,20)
z=np.linspace(1.,2.,20)
xi=np.linspace(1.,10.,10)
yi=np.linspace(1.,10.,10)
zi = ml.griddata(x,y,z,xi,yi)
但是,当涉及到 griddata 时,我收到以下错误:IndexError: invalid index
因此,我尝试对文档的示例进行一些修改,如下所示:
from matplotlib.mlab import griddata
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-2.1,2.1,300)
y = np.linspace(-2.1,2.1,300)
z = x*np.exp(-x**2-y**2)
# define grid.
xi = np.linspace(-2.1,2.1,100)
yi = np.linspace(-2.1,2.1,200)
# grid the data.
zi = griddata(x,y,z,xi,yi,interp='linear')
我得到同样的错误。我不明白出了什么问题。
谢谢你的帮助。