2013-06-10 4 views
5

Minimal Arbeitsbeispiel meines Codes:Matplotlib - Grid immer vor ax-h/v-Linien

import matplotlib.pyplot as plt 
import matplotlib.gridspec as gridspec 
import numpy as np 
from scipy.ndimage.filters import gaussian_filter 
import numpy.random as nprnd 

x = nprnd.randint(1000, size=5000) 
y = nprnd.randint(1000, size=5000) 

xmin, xmax = min(x), max(x) 
ymin, ymax = min(y), max(y) 
rang = [[xmin, xmax], [ymin, ymax]] 
binsxy = [int((xmax - xmin)/80), int((ymax - ymin)/80)] 

H, xedges, yedges = np.histogram2d(x, y, range=rang, bins=binsxy) 
H_g = gaussian_filter(H, 2, mode='constant') 

xline = 6. 
yline = 4. 

fig = plt.figure(figsize=(5, 5)) # create the top-level container 
gs = gridspec.GridSpec(1, 1) # create a GridSpec object 
ax0 = plt.subplot(gs[0, 0]) 

# Set minor ticks 
ax0.minorticks_on() 
# Set grid 
ax0.grid(b=True, which='major', color='k', linestyle='-', zorder=1) 
ax0.grid(b=True, which='minor', color='k', linestyle='-', zorder=1) 
# Add vertical and horizontal lines 
plt.axvline(x=xline, linestyle='-', color='white', linewidth=4, zorder=2) 
plt.axhline(y=yline, linestyle='-', color='white', linewidth=4, zorder=2) 

plt.text(0.5, 0.91, 'Some text', transform = ax0.transAxes, \ 
bbox=dict(facecolor='white', alpha=1.0), fontsize=12) 

plt.imshow(H_g.transpose(), origin='lower') 

plt.show() 

, die gibt diese:

plot

Wie Sie finden Sie in der Gitter auf der axline & avline Linien gezeichnet, obwohl ich die zorder andersrum habe die Einrichtung. Wie kann ich das beheben?

Ich benutze Canopy v 1.0.1.1190.

+1

'grid' ignoriert die kwarg' zorder'. Das Gitter ist Teil der "Achsen" -Objekte für die x- und y-Achse, die eine "Z-Achse" von 2,5 haben. – tacaswell

Antwort

4

Ihr zorder=2 ist zu klein.
Erhöhen sie zorder=3 und die axline und avline wird über dem Gitter und unter dem Etikett sein:

plt.axvline(x=xline, linestyle='-', color='white', linewidth=4, zorder=3) 
plt.axhline(y=yline, linestyle='-', color='white', linewidth=4, zorder=3) 

enter image description here

Wenn Sie die zorder weiter erhöhen sollten, zum Beispiel zorder=10 würden die Linien oben auf Ihrem some text -label.
Weitere Informationen zu den Standardeinstellungen für zorder -Werte finden Sie unter here.

+0

@Gabriel: Ist diese Antwort hilfreich für Sie? – Schorsch

+0

@Scorsch definitiv, vielen Dank! Ich habe diese Antwort bereits akzeptiert, obwohl ich verwirrt bin, warum ich die "Zorder" auf 3 erhöhen muss, wenn 2 _should_ genug sein sollte, da das Gitter mit einer "zorder = 1" gezeichnet wird. Jedenfalls nochmals vielen Dank. – Gabriel

+0

@ Gabriel: Ich stimme zu. Ich habe noch keine vollständige Liste für 'zorder' Standardeinstellungen gefunden. Wenn ich es tue, füge ich es hier ein. – Schorsch

Verwandte Themen