Sin embargo, quiero que los gráficos 221 y 223 compartan el mismo eje x. Tengo el siguiente código:
self.fig_part_1 = plt.figure()
self.plots_part_1 = [
plt.subplot(221),
plt.subplot(223),
plt.subplot(122),
]
¿Cómo puedo lograr eso? Al final, no quiero que se muestren los números del eje x en el gráfico 221.
Respuestas
1 para la respuesta № 1(Esto es principalmente un comentario para @H. Rev. pero lo publico como una "respuesta" para obtener un mejor formato de código)
Creo que es mucho mejor simplemente agregar las subparcelasmanualmente, ya que a medida que lo implementas ahora te dará dos ejes que solo tirarás. Incluso pueden dar problemas con las marcas de eje superpuestas y mucha confusión en general. Creo que es mejor crear la figura primero y luego agregar los ejes uno por uno. De esta manera también se resuelve el problema al tener que "actualizar" la cifra actual con plt.figure(self.f.number)
ya que tienes acceso directo a por ej. fig_N
import matplotlib.pyplot as plt
fig1 = plt.figure()
# fig2 = plt.figure() # more figures are easily accessible
# fig3 = plt.figure() # more figures are easily accessible
ax11 = fig1.add_subplot(221) # add subplot into first position in a 2x2 grid (upper left)
ax12 = fig1.add_subplot(223, sharex=ax11) # add to third position in 2x2 grid (lower left) and sharex with ax11
ax13 = fig1.add_subplot(122) # add subplot to cover both upper and lower right, in a 2x2 grid. This is the same as the rightmost panel in a 1x2 grid.
# ax21 = fig2.add_subplot(211) # add axes to the extra figures
# ax21 = fig2.add_subplot(212) # add axes to the extra figures
# ax31 = fig3.add_subplot(111) # add axes to the extra figures
plt.show()
1 para la respuesta № 2
Solo usa plt.subplots
(diferente de plt.subplot
) para definir todos tus ejes, con la opción sharex=True
:
f, axes = plt.subplots(2,2, sharex=True)
plt.subplot(122)
plt.show()
Tenga en cuenta que la segunda llamada con una matriz de subplot más grande se superpone a la anterior.
Ejemplo (No se pudo mostrar la imagen debido a su reputación ...)