我有使用matplotlib pcolormesh生成大量png图像的代码。图像是高分辨率的,因此需要一段时间才能绘制出来。我试图在不损害图形外观的情况下尽可能减少绘制时间,但是每个图像仍需要15至20秒才能保存到文件中。
问题是,此代码必须在可操作的设置下运行,当在crontab上运行脚本时(每当有新数据可用时),图像每隔约5分钟生成一次。对于仅1个变量,我通过遍历包含我不同地图域边界的字典来生成6个(或更多不同区域)的图像:
# Using the 'Agg' backend because this will be run automatically
# Not sure if there are any faster alternatives to Agg
import matplotlib
matplotlib.use('Agg')
# The map domains used:
domains = {'neweng': [40.7, 48, -80, -66], 'midatl': [35.5, 45, -87.5, -70]}
# Pull data from a file and do some calculations
# Now we plot for each domain
for region, constraint in domains.iteritems():
# region is name of domain, constraints are the values of lat/lon min and max
mH = Basemap(projection='mill', llcrnrlon=constraint[2], \
urcrnrlon=constraint[3], llcrnrlat=constraint[0], \
urcrnrlat=constraint[1], resolution='h')
# Simplified version of plotting
plt.figure(figsize=[15,12])
mH.pcolormesh(lons, lats, Twf, cmap=my_cmap, shading='gouraud')
mH.drawcoastlines()
mH.drawcountries()
mH.drawstates()
mH.drawcounties()
# Do some other stuff
plt.savefig('/home/kschneider/Documents/wetbulb/Images/' + region + fcst_hr_str, bbox_inches='tight')
我已经阅读了有关在python中使用子处理在同时利用多个内核的同时绘制多个图像的信息,但是我不确定如何将其应用于我的情况。在这种情况下,我想同时绘制多个“域”。
此外,我也欢迎其他有关如何提高速度的建议。
代码输出: Example output