Построение горизонтальной линии на нескольких подзаголовках в python с использованием 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()
Это создает следующие:
опять же, я хочу, чтобы линия, которую я нарисовал на последнем подзаголовке, также появилась на первых двух подзаголовках. Как мне это сделать?
2 ответов
Я нашел способ сделать это для тех, кто наткнется на это в любом случае.
нам нужно заменить следующую строку из 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)
это производит:
так как вы определили ax1
, ax2
и ax3
, на них легко рисовать горизонтальные линии. Вы должны сделать это отдельно для них. Но ваш код может быть упрощен:
for ax in [ax1, ax2, ax3]:
ax.axhline(y=0.002, c="blue",linewidth=0.5,zorder=0)
по данным axhline документация, xmin
и xmax
должен быть в диапазоне (0,1). Нет никаких шансов, что xmax=3.0
. Поскольку ваше намерение состоит в том, чтобы нарисовать горизонтальную линию по осям (что является поведением по умолчанию axhline
метод ), вы можете просто опустить xmin
и