2017-03-03 1 views
0

Beim Zeichnen ein Artist mit streamplot die zweite immer im Vordergrund angezeigt wird, obwohl die Zeichnung vor dem Artist gemacht wird:Streamplot immer im Vordergrund

enter image description here

Das gleiche mit pcolormesh getan sieht aus wie erwartet:

enter image description here

Dies ist der Code für beide Bilder:

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib.patches import Rectangle 

Y, X = np.mgrid[-3:3:100j, -3:3:100j] 
U = -1 - X**2 + Y 
V = 1 + X - Y**2 
speed = np.sqrt(U*U + V*V) 

fig0, ax0 = plt.subplots() 
working = False 
if working: 
    strm = ax0.pcolormesh(X, Y, U, cmap=plt.cm.autumn) 
else: 
    strm = ax0.streamplot(X, Y, U, V, color=U, linewidth=2, cmap=plt.cm.autumn) 
    fig0.colorbar(strm.lines) 

#fig1, (ax1, ax2) = plt.subplots(ncols=2) 
#ax1.streamplot(X, Y, U, V, density=[0.5, 1]) 
# 
#lw = 5*speed/speed.max() 
#ax2.streamplot(X, Y, U, V, density=0.6, color='k', linewidth=lw) 

e = Rectangle(xy=(0,0), width=1, height=1) 
e.set_facecolor([0.9,0.9,0.9]) 
ax0.add_artist(e) 

plt.show() 

Was kann ich tun, die Artist überlagert die streamplot?

Antwort

2

Sie können die Z-Reihenfolge von Interpreten ändern. Für Ihr Beispiel versuchen:

e = Rectangle(xy=(0,0), width=1, height=1, zorder=10) 

Nach a matplotlib example scheint der Standard-Z-Ordnung zu sein:

  • Aufnäher/PatchCollection => 1
  • Line2D/LineCollection => 2
  • Text => 3

Dies würde erklären, warum der streamplot (Linien) über das Rechteck gezeichnet würde e (ein Patch).

+0

Ah, zu einfach :-) Ich dachte nicht, dass es funktionieren würde, da streamplot keinen Zorder-Parameter hat. Vielen Dank! –

Verwandte Themen