2014-01-15 10 views
16

Ich zeichne drei Unterplots auf der gleichen Seite. Ich möchte eine horizontale Linie durch alle Subplots ziehen. Es folgt mein Code und das resultierende Diagramm: (können Sie bemerke ich die horizontale Linie auf einem der Grundstücke bekommen, aber nicht alle)Plotten einer horizontalen Linie auf mehreren Unterplots in Python mit pyplot

gs1 = gridspec.GridSpec(8, 2) 
gs1.update(left=0.12, right=.94, wspace=0.12) 
ax1 = plt.subplot(gs1[0:2, :]) 
ax2 = plt.subplot(gs1[3:5, :], sharey=ax1) 
ax3 = plt.subplot(gs1[6:8, :], sharey=ax1) 

ax1.scatter(theta_cord, density, c = 'r', marker= '1') 
ax2.scatter(phi_cord, density, c = 'r', marker= '1') 
ax3.scatter(r_cord, density, c = 'r', marker= '1') 
ax1.set_xlabel('Theta (radians)') 
ax1.set_ylabel('Galaxy count') 
ax2.set_xlabel('Phi (radians)') 
ax2.set_ylabel('Galaxy count') 
ax3.set_xlabel('Distance (Mpc)') 
ax3.set_ylabel('Galaxy count') 
plt.ylim((0,0.004)) 
loc = plticker.MultipleLocator(base=0.001) 
ax1.yaxis.set_major_locator(loc) 

plt.axhline(y=0.002, xmin=0, xmax=1, hold=None) 

plt.show() 

Dies erzeugt die folgende: enter image description here

Noch einmal, ich möchte, dass die Linie, die ich auf dem letzten Teilplot gezeichnet habe, auch auf den ersten beiden Teilplots erscheint. Wie mache ich das?

+0

Im Allgemeinen ist die weniger Nicht benötigte Details (wie Ihre Achsenbeschriftungen, Ihre tatsächlichen Daten) Ihre Frage enthält das Bessere. Es ist am besten, wenn Ihr Code kopierfähig ist. – tacaswell

Antwort

30

Ich habe einen Weg gefunden, es für jeden zu tun, der sowieso darauf stolpert.

Wir müssen die folgende Zeile aus dem OP ersetzen:

plt.axhline(y=0.002, xmin=0, xmax=1, hold=None) 

Wir ersetzen es mit:

ax1.axhline(y=0.002,xmin=0,xmax=3,c="blue",linewidth=0.5,zorder=0) 
ax2.axhline(y=0.002,xmin=0,xmax=3,c="blue",linewidth=0.5,zorder=0) 
ax3.axhline(y=0.002,xmin=0,xmax=3,c="blue",linewidth=0.5,zorder=0) 

Dies erzeugt:

enter image description here

+2

Bitte denken Sie daran, Ihre eigene Antwort zu akzeptieren, wenn Sie es zulassen. Vielleicht möchten Sie auch https://stackoverflow.com/questions/16849483/which-is-the-recom- mended -way-to-plot -matplotlib- or- pylab/16849816#16849816 für eine Erklärung der Pyplot vs OO-Schnittstelle lesen . – tacaswell