【发布时间】:2014-05-17 07:31:59
【问题描述】:
我有一个函数returnValuesAtTime,它返回三个列表-x_vals、y_vals 和swe_vals。所有三个列表的长度相同,swe_vals 中的每个元素对应于来自x_vals 的x-value 和来自y_vals 的y-value。我希望生成一个带有图例的热图,该图例使用(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 Zhu 的建议):
【问题讨论】:
-
可以安全地假设您的
x_vals和y_vals分布不均,例如1,2,3,4,....?很可能是的,因为您有一行xx=np.linspace(x_vals[0],x_vals[-1],x_points)? -
@ CTZHU它们是均匀分布的,具有X_VALS的前三个元素是[439936.8657319,440056.8657319,440176.8657319,440176.8657319,440176.8657319]和Y_VALS的前三个元素是[4514018.27971591,4513898.27971591,4513778.27971591]。 x_vals 中的每个元素都比前一个多 120.0,y_vals 中的每个元素都比前一个少 120.0。
-
我明白了,就像
meshgrid出来的一样
标签: python numpy matplotlib visualization