python - plotting - pyplot을 사용하여 파이썬에서 여러 개의 서브 그림에 수평선을 그립니다.



python scatter plot (1)

같은 페이지에 세 개의 서브 플로팅을 표시합니다. 나는 모든 subplots을 통해 horiontal 라인을 그려야한다. 다음은 내 코드와 그 결과 그래프입니다. (당신은 내가 음모 중 하나에서 수평선을 얻을 수 있지만 전부는 아닙니다)

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()

이것은 다음을 생성합니다.

다시 말하지만, 마지막 서브 플롯에 그린 선을 처음 두 서브 플롯에도 표시하고 싶습니다. 어떻게해야합니까?

https://ffff65535.com


나는 이것에 어쨌든 비틀 거리는 누군가를 위해 그것을하는 방법을 찾아 냈다.

우리는 OP에서 다음 라인을 대체해야합니다 :

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

우리는 그것을 다음으로 대체합니다 :

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)

이것은 다음을 생성합니다.





line-plot