我正在尝试生成一个每日温度热图的gif。我首先生成每小时的热图。然后我使用imageio附加所有生成的图像来生成最终的gif。在
下面是显示我基本逻辑的代码草案:# Find min and max value from all sample data
while (count < len(grib_objects)):
vmax = max(grib_objects[count]['maximum'], vmax)
vmin = min(grib_objects[count]['minimum'], vmin)
count++
# Get the standard mappable object
cs = self.GenerateMasterMappable(grib_objects[0], vmin, vmax)
# Generate image of each frame with defined vmin, vmax and cs
count = 0
while count < len(grib_objects):
self.Frame(grib_objects[count], filenames[index], vmin, vmax, cs)
count++
# Generate the final gif by appending each generated image as above
由于生成的每个热图具有不同的数据值范围,因此它们具有不同的色标。但我想要一张带有静态色条的动态热图。所以我试着用每小时一次的示例生成一个标准的颜色条,并将这个颜色条用于所有其他图像。在
我使用一个示例数据获取可映射对象cs并将其传递给colorbar函数。但这并没有如预期的那样工作,gif仍然显示动态颜色条。标准可映射对象cs似乎没有正确设置。在
下面是如何在函数generateMasterMapable中获取可映射对象cs的代码:
^{pr2}$
然后,我将这个标准的可映射对象传递给function Frame,它生成每小时的热图,如下所示:Frame(self, grib_object, file_name, vmin, vmax, cs):
... // draw basic map layout m
x,y = m(lon, lat)
norm = mpl.colors.Normalize(vmin=vmin,vmax=vmax)
ab = m.pcolormesh(x,y,data,
shading='flat',
vmin=vmin,
vmax=vmax,
cmap=plt.cm.jet)
// passing cs as first parameter does not really make a difference, why?
cbar = plt.colorbar(cs,location='bottom', fraction=0.046, pad=0.06)
事实上,即使我删除了colorbar()中的第一个参数,最后的gif仍然保持不变。有没有合适的方法来绘制一个独立于当前图像(热图)的标准色条??在