Mapa de base y Matplotlib - Mejora de la velocidad

Estoy creando una herramienta para la visualización geoespacial de datos económicos utilizandoMatplotlib yBasemap.

Sin embargo, en este momento, la única forma en que pensé que me da suficiente flexibilidad es crear un nuevo mapa base cada vez que quiera cambiar los datos.

Aquí están las partes relevantes del código que estoy 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>

¿Cómo puedo crear estas parcelas más rápido?

No puedo pensar en una solución para evitar crear un mapa cada vez que ejecuto mi código. Intenté crear el lienzo / figura fuera de la clase, pero no hizo mucha diferencia. La llamada más lenta es la que crea el mapa base y carga los datos de forma. Todo lo demás corre bastante rápido.

Además, intenté guardar el mapa base para usarlo en el futuro, pero como necesito nuevos ejes, no pude hacerlo funcionar. Tal vez me pueda indicar la dirección correcta sobre cómo hacer esto.

Me gustaría que supiera que estoy usando el lienzo como un QSidget de PySide y que estoy trazando diferentes tipos de mapas dependiendo de los datos, este es solo uno de ellos (otro sería un mapa de Europa, por ejemplo) , o los Estados Unidos).

Respuestas a la pregunta(1)

Su respuesta a la pregunta