Sto provando a costruire una semplice funzione che prende un'istanza di sottotrama (matplotlib.axes._subplots.AxesSubplot
) e trasforma la sua proiezione in un'altra proiezione, ad esempio, in una delle proiezioni cartopy.crs.CRS
.Come cambio la proiezione sottotrama di matplotlib di un asse esistente?
L'idea simile a questa
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
def make_ax_map(ax, projection=ccrs.PlateCarree()):
# set ax projection to the specified projection
...
# other fancy formatting
ax2.coastlines()
...
# Create a grid of plots
fig, (ax1, ax2) = plt.subplots(ncols=2)
# the first subplot remains unchanged
ax1.plot(np.random.rand(10))
# the second one gets another projection
make_ax_map(ax2)
Naturalmente, posso solo usare fig.add_subplot()
funzione:
fig = plt.figure(figsize=(10,5))
ax1 = fig.add_subplot(121)
ax1.plot(np.random.rand(10))
ax2 = fig.add_subplot(122,projection=ccrs.PlateCarree())
ax2.coastlines()
ma mi chiedevo se esiste un adeguato metodo di matplotlib
di cambiare un asse sottotrama proiezione dopo è stata definita. La lettura dell'API matplotlib non è stata di aiuto, purtroppo.
Grazie! E solo per confermare, la parola chiave 'projection' determina la classe per tutte le sottotrototteri in una volta, quindi non c'è modo di passare diverse proiezioni in' subplot_kw'? E.g. 'projection = 'polar'' per la prima colonna e' projection = ccrs.PlateCarree() 'per la seconda colonna di un set di subplot creato da' plt.subplots (ncols = 2) '? –
Le parole chiave in 'subplot_kw' vengono passate a ciascun asse, quindi non penso che tu possa fare ciò che descrivi. La funzione 'subplots' è un comodo wrapper per soddisfare il caso d'uso di base, se hai bisogno di qualcosa in più puoi scrivere la tua funzione wrapper usando' add_subplot' o simile. – ajdawson
C'è un modo per farlo con ImageGrid? Sarebbe bello poter avere il controllo sulla spaziatura della mappa e il posizionamento della barra di colore che consente ImageGrid, ma non vedo un modo per impostare la proiezione per le sottotrame nella griglia. –