我有一个函数returnValuesAtTime,它返回三个lists-x_vals,y_vals和swe_vals.所有三个列表具有相同的长度,并且swe_vals中的每个元素对应于来自x_vals的x值和来自y_vals的y值.我希望生成一个带有图例的热图,该图例使用(x,y)坐标和swe_vals作为强度.
我写了以下代码:
def plotValuesAtTimeMap(t):
x_vals,y_vals,swe_vals=returnValuesAtTime(t)
x_points=len(x_vals)
y_points=len(y_vals)
xx=np.linspace(x_vals[0],x_vals[-1],x_points)
yy=np.linspace(y_vals[0],y_vals[-1],y_points)
fig,ax=plt.subplots()
im=ax.pcolormesh(xx,yy,z)
fig.colorbar(im)
ax.axis('tight')
plt.show()
一旦使用returnValuesAtTime(t)获得三个列表,我将获取x_vals和y_vals的长度.然后我使用它们来生成x和y方向的间距,限制是x_vals和y_vals的第一个和最后一个元素.然后我尝试生成colormesh.但是这给了我一个没有值的空的colormesh.
可能出了什么问题?使用3D numpy数组而不是三个列表会解决问题吗?
每个列表的前10个元素是:
x_vals[0:10]
[439936.86573189893,
439936.86573189893,
439936.86573189893,
439936.86573189893,
439936.86573189893,
439936.86573189893,
439936.86573189893,
439936.86573189893,
439936.86573189893,
439936.86573189893]
y_vals[0:10]
[4514018.2797159087,
4513898.2797159087,
4513778.2797159087,
4513658.2797159087,
4513538.2797159087,
4513418.2797159087,
4513298.2797159087,
4513178.2797159087,
4513058.2797159087,
4512938.2797159087]
swe_vals[0:10]
[2.7520323,
2.7456229,
2.7456021,
2.745455,
2.7478349,
2.7445269,
2.7484877,
2.7524617,
2.75491,
2.7509627]
编辑:
我添加了一个散点图,显示下面的(x,y)网格范围:
x和y值在列表中,每个长度为6804.每个(x,y)点在单独的列表中具有对应的z值,其长度也是6804.为了澄清我希望实现的目标,我想生成一个热图,如图,其中z轴的大小由图上每个网格的颜色表示.类似于下面显示的内容:
在示例图中,所有z值都相同.因此整个网格空间的颜色相同.
编辑新结果图(基于成员CT朱的建议):