【问题标题】:How to plot 3D data as 2D grid colormap in Python?如何在 Python 中将 3D 数据绘制为 2D 网格颜色图?
【发布时间】:2015-01-13 02:07:55
【问题描述】:

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

【问题讨论】:

  • 好问题。您可以尝试使用scipy.interpolate.interp2d 创建一个函数并在常规网格上重新采样,然后将整个事物显示为图像。另一种可能是使用mayavi.mlab.triangular_mesh,但为此您需要使用最近的邻居或其他东西自己创建三角形。有可能 mayavi 实际上有一个更简单的绘图函数已经处理了这个问题。
  • 您的数据似乎已经在直线网格上定义了?

标签: python numpy matplotlib plot contour


【解决方案1】:

您可以使用matplotlib.mlab 中的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)

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

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

【讨论】:

猜你喜欢
  • 2013-07-19
  • 2021-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多