我遇到了以下问题。我在天体物理学,并试图制作天空图。收集的数据告诉我每个(x,y)坐标的天空温度。我一直在寻找如何绘制这个的年龄,但到目前为止我提出的最好的是使用meshgrid。然而,我的问题是,如果Z是X和Y的某个函数,这是完美的。这不是这里的情况;只有一个温度对应于每个(x,y)组合。我一直在尝试(显然没有成功,有一些'假数据'要测试):
import numpy as np
import matplotlib.pyplot as plt
xw = [0,1,2,3,4,5]
yw = [20,30,40,50,60]
zw = [-10,-20,-30,-40,-50]
#Z=np.array((xw,yw,zw))
X,Y=np.meshgrid(xw,yw)
Z = X*Y
im = plt.pcolormesh(X,Y,Z, cmap='hot')
plt.colorbar(im, orientation='vertical')
plt.show()
输入格式,在.txt文件中:
x1 y1 T_11
x2 y1 T_21
x3 y1 T_31
...
xn y1 T_n1
x1 y2 T_12
x2 y2 T_22
x3 y2 T_32
等
非常感谢任何帮助: - )
答案 0 :(得分:0)
# make a dict of x-y coords mapping to z values
skymap = {}
for x,y,z in zip(xw,yw,zw):
skymap[(x,y)] = z
# define a function of x and y that returns the corresponding z value
# (or some default - probably not 0, more like some function of nearest
# defined (x,y) neighbors)
def getZ(x,y):
return skymap.get((x,y), 0)