为多个Xarray图制作带有固定颜色条的干净高质量GIF
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为多个Xarray图制作带有固定颜色条的干净高质量GIF相关的知识,希望对你有一定的参考价值。
我想从xarray的多个图中制作出gif。我需要所有图表中的颜色条都相同以跟踪更改。将颜色固定在颜色栏刻度上很容易,但是颜色会不断变化。不知何故制作GIF会弄乱颜色!我该如何解决?
#making GIF
fns_image=glob(save_image_dir+'/'+'*')
fns_image.sort()
with imageio.get_writer(save_gif_dir+gif_name, mode='I') as writer:
for filename in fns_image:
print(filename)
image = imageio.imread(filename,)
writer.append_data(image)
答案
'levels'参数(作为整数)将仅提供级别数,但始终根据数据缩放。要设置要映射的指定范围的数据,可以提供等距数据的自定义数组。数组的长度将对应于级别数。
根据您的情况,应将电平更改为levels = np.linspace(min_value, max_value, <number of levels>)
,而不是范围功能。
EDIT(提供示例):
import xarray as xr
import os, glob
import imageio
png_dir = '<your_directory>'
airtemps = xr.tutorial.open_dataset('air_temperature')
# Plots with variable (scaling) colorbar
for i in np.arange(25):
plt.figure()
plt.contourf(airtemps.air[i,:,:], levels = 25), plt.colorbar()
plt.savefig(png_dir + 'air_temp_' + str(i) +'.png')
max_temp = airtemps.air[:25,:,:].max()
min_temp = airtemps.air[:25,:,:].min()
# Plots with Fixed colorbar
for i in np.arange(25):
plt.figure()
plt.contourf(airtemps.air[i,:,:], levels = np.linspace(min_temp,max_temp,25)), plt.colorbar()
plt.savefig(png_dir + 'fixed_cb_air_temp_' + str(i) +'.png')
variable_cb_images = glob.glob(png_dir + 'air*')
fixed_cb_images = glob.glob(png_dir + ('fix*'))
var = [imageio.imread(file) for file in variable_cb_images]
fix = [imageio.imread(file) for file in fixed_cb_images]
imageio.mimsave(png_dir + '/movie_variable_cb.gif', var, fps = 10)
imageio.mimsave(png_dir + '/movie_fixed_cb.gif', fix, fps = 10)
以上是关于为多个Xarray图制作带有固定颜色条的干净高质量GIF的主要内容,如果未能解决你的问题,请参考以下文章