use*_*116 5 python plot numpy matplotlib contour
我有 3D 数据作为 numpy 数组的列(也就是说 array[0] = [0,0,0] 等),例如
X Y Z
0 0 0
0 1 10
1 0 20
1 1 30
Run Code Online (Sandbox Code Playgroud)
我想绘制此图,以便每个 (X,Y) 坐标都有一个以坐标为中心的正方形,并使用从(例如)0 到 30 的颜色条显示 Z 值。
然后我想叠加一些轮廓线,但问题的第一部分是最重要的。
对于已经网格化数据的人来说有帮助,但我不确定调用我的列数据的最佳 matplotlib 例程。另外,这是为了科学出版,所以需要具有良好的质量和外观!希望有人可以帮忙!
您可以使用griddatafrommatplotlib.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.]])
Run Code Online (Sandbox Code Playgroud)
xi映射和点的选择yi取决于您,它们不必是可以griddata为您插值的整数。