Matplotlib: Lassen Sie die Gitterlinien hinter dem Diagramm, aber die y- und x-Achse darüber

Es fällt mir schwer, Gitternetzlinien unter meinen Diagrammen zu zeichnen, ohne mit der Haupt-X- und -Y-Achsengrenze zu verwechseln:

import matplotlib.pyplot as plt
import numpy as np


N = 5
menMeans = (20, 35, 30, 35, 27)
menStd =   (2, 3, 4, 1, 2)

ind = np.arange(N)  # the x locations for the groups
width = 0.35       # the width of the bars

fig, ax = plt.subplots()
rects1 = ax.bar(ind, menMeans, width, color='r', yerr=menStd, alpha=0.9, linewidth = 0,zorder=3)

womenMeans = (25, 32, 34, 20, 25)
womenStd =   (3, 5, 2, 3, 3)
rects2 = ax.bar(ind+width, womenMeans, width, color='y', yerr=womenStd, alpha=0.9, linewidth = 0,zorder=3)

# add some
ax.set_ylabel('Scores')
ax.set_title('Scores by group and gender')
ax.set_xticks(ind+width)
ax.set_xticklabels( ('G1', 'G2', 'G3', 'G4', 'G5') )

ax.legend( (rects1[0], rects2[0]), ('Men', 'Women') )

fig.gca().yaxis.grid(True, which='major', linestyle='-', color='#D9D9D9',zorder=2, alpha = .9)
[line.set_zorder(4) for line in ax.lines]

def autolabel(rects):
    # attach some text labels
    for rect in rects:
        height = rect.get_height()
        ax.text(rect.get_x()+rect.get_width()/2., 1.05*height, '%d'%int(height),
                ha='center', va='bottom')

autolabel(rects1)
autolabel(rects2)

plt.show()

Das Beispiel stammt aus Matplotlibs eigenem, und ich habe ein wenig optimiert, um zu zeigen, wie das Problem auftritt. Ich kann keine Bilder posten, aber wenn Sie den Code ausführen, werden die Balken sowohl über den horizontalen Gitterlinien als auch über der x- und y-Achse gezeichnet. Ich möchte nicht, dass die x- und y-Achse durch das Diagramm ausgeblendet wird, insbesondere wenn die Häkchen ebenfalls blockiert werden.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage