matplotlib zorder di elementi in stampa polare sovrapposti sulla trama cartesiana
-
21-12-2019 - |
Domanda
Sto avendo una difficoltà a controllare lo zero degli elementi di una trama polare sovrapposta su una trama cartesiana.
Considera questo esempio:
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(1, 1, marker='*', s=2000, c='r', zorder=2)
ax2 = fig.add_axes(ax.get_position(), frameon=False, polar=True)
ax2.scatter(1., 0.1, marker='*', s=1000, c='b', zorder=1)
plt.xlim(0, 2)
plt.ylim(0, 2)
plt.show()
.
Il risultato è:
Sembra che matplotlib
ignorasse il zorder
dei grafici sparpacchi.Mi aspetterei che la stella rossa sia in cima al blu.
Potresti per favore spiegare cosa sto sbagliando qui?
Ho trovato Una domanda , che è simile al mio, ma riguarda invece calze e griglie.Forse è lo stesso bug?
P.S.Sto eseguendo Linux X86_64 con Python 2.7.6 e Matplotlib 1.3.1.
Soluzione
Il problema è che si sta impostando l'ordine Z dei segni su diversi assi ax
e ax2
ma poiché ax2
ha una maggiore Z-order a tutti i grafici in ax
.Una soluzione potrebbe essere quella di impostare un ordine Z superiore a ax
ma è necessario creare lo sfondo trasparente o impostare frameon=False
(e questo è forse non desiderabile per il tuo caso), questa è una dimostrazione di ciò che sto dicendo: Plot: