2015-06-30 27 views
5

In seguito alla mia domanda precedente: How to superimpose figures in matplotlib mi piacerebbe sapere come si può creare un oggetto riutilizzabile basemap. Il mio problema è che un non è un oggetto pyplot, quindi la soluzione che ho ricevuto funziona bene su figures/axes ma non sugli oggetti basemap.Come creare una mappa di base riutilizzabile

Ho cercato di guardarmi intorno e trovare una soluzione, ma non ho trovato nulla, solo discussioni.

+0

Non ci dovrebbe essere alcun motivo per cui l'approccio mostrato nella domanda a cui ci si è collegati non funzionerà con gli assi della mappa di base. –

+0

Grazie a @joe, ma non funziona esattamente nello stesso modo. Gli oggetti 'base mappa' non sono oggetti' pyplot' one-to-one. –

+1

No, non lo sono, ma sono ancora oggetti. Puoi passarli in una funzione che chiama i loro metodi bene. Hanno metodi di tracciamento molto simili a un'istanza di 'Axes', ma ne hanno anche altri. Se hai bisogno dell'istanza 'Axes' sottostante puoi ottenerla con' map._check_ax() 'dove' map' è l'oggetto della mappa di base. Puoi approfondire ciò che stai cercando di fare? –

risposta

1

Grazie a @JoeKington qui e @EdSmith allo How to superimpose figures in matplotlib, sono stato in grado di capire come ottenere ciò che volevo: riutilizzare gli oggetti della mappa di base e passarli in giro.

Ho fatto in questo modo:

  1. creato un base_map.py che ha due funzioni: plot() che creano un oggetto della mappa e disegnare alcune proprietà e un altro, set_a_map() che crea un oggetto mappa vuoto.
  2. Negli altri moduli sono stati aggiunti al terreno Funzioni di una proprietà map=None, e in ogni funzione ho aggiunto un:

    modo che in caso che nessun oggetto mappa che si passa alla altra funzione, la funzione creerà un nuovo oggetto mappa.

  3. Nelle mie funzioni di stampa, invece di utilizzare plt.imshow(...) ad esempio, sto utilizzando map.imshow(...). In questo modo i miei dati saranno tracciati su una mappa.

Grazie per la pazienza e per i commenti davvero utili!