Я пытаюсь создать несколько изображений в серии, используя matplotlib и basemap. По сути, я пытаюсь взять выходные данные метеорологической модели и построить из них график на каждом временном шаге. Тем не менее, я пытаюсь сделать это эффективно, не очищая фигуру и не перерисовывая все (особенно базовую карту) на каждом временном шаге. Ниже приведен соответствующий код.
basem = Basemap(llcrnrlon=setlats[1], llcrnrlat=setlats[0],
urcrnrlon=setlats[3], urcrnrlat=setlats[2],
projection='mill', resolution='l')
...
x,y = basem(lons, lats)
basem.drawcoastlines()
parallels = np.arange(0.,92,10.)
basem.drawparallels(parallels,labels=[1,0,0,0],fontsize=10)
# draw meridians
meridians = np.arange(180.,360.,10.)
basem.drawmeridians(meridians,labels=[0,0,0,1],fontsize=10)
basem.drawstates()
basem.drawcountries()
cs = basem.contourf(x,y, plotted_var, levels=clevs,
cmap = plt.get_cmap(colorbar), extend="max")
cl = basem.contour(x,y, contoured_var, levels=clevsl, colors='k')
cb = basem.barbs(x[points],y[points],
barbs_var_u[points], barbs_var_v[points],
barbcolor='k',flagcolor='k', pivot='middle',
length=4)
...
for time in range(time+1,maxt+1):
timef = time
plotted_var = multf(np.array(data2[var])[timef,\
bounds[0]:bounds[1],bounds[2]:bounds[3]])
if barbs >=0 or barbs ==-2:
cb[0].set_UVC(barbs_var_u[points], barbs_var_v[points])
cs.set_array(plotted_var)
cl.set_array(contoured_var)
...
Однако, хотя это изменяет бородки, это не меняет контуры (заполненные или не заполненные). Я почти уверен, что set_array — это не та команда, которую я хочу использовать, но я внимательно изучил и не могу найти эквивалент set_uvc. Кроме того, я также пытался распутать plotted_var и контурный_var, и это также не изменилось. Примечание. Я только пытаюсь обновить компонент z (цвета) контурного графика, x и y должны оставаться прежними.
ContourSet.collections
— это правильно.set_array
унаследован отScalarMappable
, который управляет отображением чисел -> цветов. Если вы установите массив той же длины, что и количество контуров, он должен изменить цвета контуров (но мне нужно будет прочитать код, чтобы убедиться, что он действительно это делает). - person tacaswell   schedule 13.03.2016