nach einige Suchen und Versuche, die Lösung, die ich gefunden habe, zu teilen, damit andere sie als Referenz in Zukunft verwenden können. Dies ist nicht genau das, was ich gesucht habe, da ich horizontale Gitterlinien nur für die rechte Achse haben möchte, jedoch bot es eine viel bessere Visualisierung als das ursprüngliche Diagramm.
Von this, ich fand heraus, wie die linken und rechten Achsen Ticks (dieses Problem passiert auch mit Liniendiagramme, aber der Effekt ist nicht so störend wie in einem Balkendiagramm).
import matplotlib.pyplot as plt
import seaborn as sb
import numpy as np
x = np.arange(1,11)
y1 = x[::-1]
y2 = 2 ** x
fig = plt.figure(figsize = (8,6))
ax1 = fig.add_subplot(111)
plt.bar(x, y1, 1, color = 'blue')
ax2 = ax1.twinx()
ax2.plot(x+0.5, y2, color = 'red')
ax2.set_yticks(np.linspace(ax2.get_yticks()[0],ax2.get_yticks()[-1],len(ax1.get_yticks())))
Die Gitterlinien sind noch über den Balken. Da die Teilstriche jedoch ausgerichtet sind, können wir nun das Gitter des zweiten Liniendiagramms entfernen, indem wir den expliziten Befehl: ax2.grid(False)
am Ende des vorherigen Codes hinzufügen.
Wichtig: Beachten Sie, dass in diesem Beispiel die Etiketten in der linken und rechten Achse ziemlich nett sind. In einer realen Situation kann dieser Ansatz jedoch dazu führen, dass auf der rechten Achse hässliche Beschriftungen (Floats oder grobe Ganzzahlen) erscheinen. Mit dieser Methode können wir immer noch nicht die Position der rechten Teilstriche festlegen, daher ist es keine exakte Antwort für die Frage.
Von [diesem] (http://stackoverflow.com/questions/1726391/matplotlib-draw-grid-lines-behind-other-graph-elements) scheint es, dass Sie 'set_axisbelow (True)' mit dem verwenden möchten Dokumentation [hier] (http://matplotlib.org/api/axes_api.html). Ich scheine gerade einen schrecklichen Job dabei zu haben, es zu implementieren, also kommst du vielleicht vor mir hin. – roganjosh
Ich verstehe das wirklich nicht. Soweit ich feststellen kann, dass ich die gesamte Dokumentation und die Beispiele richtig befolge, bekomme ich keinen Fehler, aber es wird einfach komplett ignoriert. Ich bin mir nicht sicher, ob ich das Problem lösen kann. – roganjosh