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

时间:2014-11-15 21:45:39

标签: python numpy matplotlib plot contour

我将3D数据作为numpy数组的列(也就是说数组[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例程。此外,这是科学出版物,所以需要具有良好的品质和外观!希望有人可以帮忙!

1 个答案:

答案 0 :(得分:2)

您可以使用griddata中的matplotlib.mlab来正确网格化数据。

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)

# ar is now
# array([[  0.,  20.],
#        [ 10.,  30.]])

映射的xiyi点的选择取决于您,并且它们不必是整数,因为griddata可以为您插入。