Je produis une carte du monde avec des camemberts dans des boîtes de maquettes individuelles. Je fais la carte et les côtes en utilisant cartopy. Les camemberts que je produis en utilisant inset_axes. Malheureusement, les camemberts cachent les côtes et j'aimerais les voir clairement.Côtes littorales cachées par l'utilisation d'inset_axes de Axes.pie
exemple de travail minimum:
import cartopy.crs as ccrs
import numpy as np
import cartopy.feature as feature
import matplotlib.pyplot as plt
def plot_pie_inset(dataframe_pie,ilat_pie,ilon_pie,axis_main,width_local,alpha_local):
ax_sub= inset_axes(axis_main, width=width_local, height=width_local, loc=3, bbox_to_anchor=(ilat_pie, ilon_pie),bbox_transform=axis_main.figure.transFigure, borderpad=0.0)
wedges,texts= ax_sub.pie(dataframe_pie,colors=colors_dual)
for w in wedges:
w.set_linewidth(0.02)
w.set_alpha(alpha_local)
w.set_zorder(1)
plt.axis('equal')
colors_dual=['RosyBrown','LightBlue']
lat_list= np.arange(0.2,0.7,0.05)
fig= plt.figure()
ax_main= plt.subplot(1,1,1,projection=ccrs.PlateCarree())
ax_main.coastlines(zorder=3)
for ilat in np.arange(len(lat_list)):
plot_pie_inset([75,25],lat_list[ilat],0.72,ax_main,0.2,0.9)
plt.show()
je peux voir les côtes en faisant les camemberts partiellement transparents en réduisant la valeur alpha. Cependant, cela rend les couleurs légèrement atténuées. Mon but est d'avoir les côtes comme couche supérieure.
J'ai essayé d'utiliser 'Zorder' pour forcer les côtes à la couche supérieure. Cependant, 'zorder' ne peut pas être passé à inset_axes, ni à ax.pie donc j'ai rendu translucides les taches de couleur dans les camemberts. Cela échoue car ax_main.coastlines n'a pas son propre 'zorder'. Le littoral semble être lié à celui de ax_main. Il n'y a aucun avantage à augmenter le zorder de ax_main.
Toutes les suggestions sont les bienvenues.
Merci beaucoup pour la réponse rapide et utile. – LeightonRegayre
Il n'est pas clair pour moi comment le fait de rendre le patch d'arrière-plan invisible permet aux littoraux d'être visibles. Est-ce que set_visible (False) tel qu'utilisé travaille à la fois sur l'arrière-plan de GeoAxes et sur les côtes, ou seulement sur l'arrière-plan? Je suppose qu'il y a une différence subtile entre visible et partiellement transparent qui signifie que l'invisible permet de voir les lignes des côtes. Est-ce exact? Merci encore! – LeightonRegayre
Le fond est un rectangle blanc derrière tout dans les axes (donc aussi derrière les côtes). Si nous plaçons les encarts derrière les axes principaux, ce rectangle blanc est devant les encarts et les cache. Mais rendre l'arrière-plan invisible (c'est-à-dire tuer le rectangle blanc) permet de voir tout ce qui se trouve derrière les axes principaux. – ImportanceOfBeingErnest