如何在Python中将3D数据绘制为2D网格colormap?

12 浏览
0 Comments

如何在Python中将3D数据绘制为2D网格colormap?

我有一个numpy数组,其中每一列都是3D数据(也就是说,array[0]=[0,0,0],等等),例如:

X     Y     Z
0     0     0
0     1     10
1     0     20
1     1     30

我想要绘制这个数据,使得每个(X,Y)坐标都有一个以该坐标为中心的正方形,颜色条从0到30显示Z值。然后,我想要叠加一些等高线,但是问题的前半部分最重要。

对于那些已经拥有网格数据的人,有一些帮助,但是我不确定应该调用哪个最好的matplotlib例程来处理我的列数据。此外,这是用于科学出版物,所以需要具有良好的质量和外观!希望有人能帮助我!

0
0 Comments

在Python中,如何将3D数据绘制成2D网格颜色图?

问题的原因是,griddata函数在较新版本的matplotlib中已被移除,因此需要找到替代方法来实现相同的功能。解决方法是使用scipy.interpolate中的griddata函数来替代。

下面是使用griddata函数的示例代码:

import numpy as np
from matplotlib.mlab import griddata
x = np.array([0,0,1,1])
y = np.array([0,1,0,1])
z = np.array([0,10,20,30])
xi = np.arange(x.min(),x.max()+1)
yi = np.arange(y.min(),y.max()+1)
ar = griddata(x,y,z,xi,yi)

上述代码中,我们首先导入所需的库,然后定义了x、y和z的数组,这些数组分别表示数据点的x、y和z坐标。接下来,我们定义了xi和yi的数组,这些数组表示网格点的x和y坐标。最后,我们使用griddata函数将数据点插值到网格点上,得到了ar数组,它表示插值后的数据。

需要注意的是,xi和yi数组的选择是任意的,并且不必是整数,因为griddata函数可以进行插值处理。

最后,我们注意到griddata函数在较新版本的matplotlib中已被移除,而在scipy.interpolate中有一个替代函数,可以实现相同的功能。你可以在这里找到更多关于这个替代函数的信息:https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.griddata.html

0