Python - 使用XY和Z点绘制光栅图像/等高线图

时间:2013-11-08 16:11:07

标签: python-2.7 matplotlib raster

我有一组X和Y坐标,每个点都有不同的像素值--Z数量。我想使用栅格或等高线图绘制这些值。

我很难做到这一点,因为像素值与X和Y坐标之间没有数学关系。

我已经为x和y值的范围创建了一个数组,我尝试构建一个字典,我可以使用连接的x和y字符串查找z的值。目前我有一个索引问题,我想知道是否有更好的方法来实现这一目标?

到目前为止我的代码是:

import matplotlib.pyplot as plt
import numpy as np

XY_Zpoints = {'11':8,
             '12':8,
             '13':8,
             '14':6,
             '21':6,
             '22':8,      
             '23':6,
             '24':6,
             '31':8,
             '32':3, 
             '33':8,
             '34':6,
             '41':8,
             '42':3, 
             '43':3,
             '44':8,
                   }

x, y = np.meshgrid(np.linspace(1,4,4), np.linspace(1,4,4))

z = XY_Zpoints[str(x)+str(y)]

# Plot the grid
plt.imshow(z)
plt.spectral()
plt.show()

提前感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:0)

您可以使用numpy数组代替字典,其中每个像素值的位置对应于x和y坐标。对于您的示例,此数组将如下所示:

z = np.array([[8, 8, 8, 6], [6, 8, 6, 6], [8, 3, 8, 6], [8, 3, 3, 8]])

要访问x = 2和y = 3的像素值,例如,您可以执行以下操作:

x = 2
y = 3
pixel = z[x-1][y - 1]

z可以显示:

imshow(z)