提高matplotlib中多个图形的绘制速度

时间:2018-12-09 18:22:00

标签: python-2.7 matplotlib python-multiprocessing matplotlib-basemap

我有使用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

0 个答案:

没有答案
相关问题