0

我有一组 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()

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

4

1 回答 1

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)
于 2013-11-08T16:29:04.807 回答