Basemap e Matplotlib - Melhorando a velocidade

Estou criando uma ferramenta para visualização geoespacial de dados econômicos usandoMatplotlib eBasemap.

No entanto, neste momento, a única maneira que pensei nisso me dá flexibilidade suficiente é criar um novo mapa base toda vez que eu quiser alterar os dados.

Aqui estão as partes relevantes do código que estou usando:

<code>class WorldMapCanvas(FigureCanvas):

def __init__(self,data,country_data):
    self.text_objects = {}
    self.figure = Figure()
    self.canvas = FigureCanvas(self.figure)
    self.axes = self.figure.add_subplot(111)
    self.data = data
    self.country_data = country_data
    #this draws the graph
    super(WorldMapCanvas, self).__init__(Figure())
    self.map = Basemap(projection='robin',lon_0=0,resolution='c', ax=self.axes)
    self.country_info = self.map.readshapefile(
        'shapefiles/world_country_admin_boundary_shapefile_with_fips_codes', 'world', drawbounds=True,linewidth=.3)

    self.map.drawmapboundary(fill_color = '#85A6D9')
    self.map.fillcontinents(color='white',lake_color='#85A6D9')
    self.map.drawcoastlines(color='#6D5F47', linewidth=.3)
    self.map.drawcountries(color='#6D5F47', linewidth=.3)
    self.countrynames = []
    for shapedict in self.map.world_info:
        self.countrynames.append(shapedict['CNTRY_NAME'])

    min_key = min(data, key=data.get)
    max_key = max(data, key=data.get)
    minv = data[min_key]
    maxv = data[max_key]

    for key in self.data.keys():
        self.ColorCountry(key,self.GetCountryColor(data[key],minv,maxv))
    self.canvas.draw()
</code>

Como posso criar esses gráficos mais rapidamente?

Não consegui pensar em uma solução para evitar a criação de um mapa toda vez que executo meu código. Eu tentei criar a tela / figura fora da classe, mas isso não fez muita diferença. A chamada mais lenta é aquela que cria o mapa base e carrega os dados da forma. Tudo mais corre muito rápido.

Além disso, tentei salvar o Basemap para uso futuro, mas como preciso de novos eixos, não consegui fazê-lo funcionar. Talvez você possa me apontar na direção certa sobre como fazer isso.

Eu gostaria que você soubesse que eu estou usando a tela como um PySide QWidget e que estou planejando diferentes tipos de mapas dependendo dos dados, este é apenas um deles (outro seria um mapa da Europa, por exemplo ou os EUA).

questionAnswers(1)

yourAnswerToTheQuestion