我有一组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()
提前感谢您提供的任何帮助!
答案 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)