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.