/ / establecer límites de eje en la pirota de matplotlib - python, matplotlib

establecer los límites de los ejes en matplotlib pyplot - python, matplotlib

Tengo dos subparcelas en una figura. Quiero establecer los ejes de la segunda trama secundaria de modo que tenga los mismos límites que la primera trama secundaria (que cambia según los valores representados). ¿Puede alguien ayudarme por favor? Aquí está el código:

import matplotlib.pyplot as plt

plt.figure(1, figsize = (10, 20))
## First subplot: Mean value in each period (mean over replications)
plt.subplot(211, axisbg = "w")
plt.plot(time,meanVector[0:xMax], color = "#340B8C",
marker = "x", ms = 4, mec = "#87051B", markevery = (asp,
2*asp))
plt.xticks(numpy.arange(0, T+1, jump), rotation = -45)
plt.axhline(y = Results[0], color = "#299967", ls = "--")
plt.ylabel("Mean Value")
plt.xlabel("Time")
plt.grid(True)


## Second subplot: moving average for determining warm-up period
## (Welch method)
plt.subplot(212)
plt.plot(time[0:len(yBarWvector)],yBarWvector, color = "#340B8C")
plt.xticks(numpy.arange(0, T+1, jump), rotation = -45)
plt.ylabel("yBarW")
plt.xlabel("Time")
plt.xlim((0, T))
plt.grid(True)

En la segunda subparcela, ¿cuáles deberían ser los argumentos para plt.ylim() ¿función? Traté de definir

ymin, ymax = plt.ylim()

en la primera subparcela y luego establecer

plt.ylim((ymin,ymax))

en la segunda subparcela. Pero eso no funcionó, porque el valor devuelto ymax es el valor máximo tomado por el y variable (valor medio) en la primera subparcela y no el límite superior del eje y.

Gracias por adelantado.

Respuestas

13 para la respuesta № 1

Su solución propuesta debería funcionar, especialmente si los gráficos son interactivos (se mantendrán sincronizados si uno cambia).

Como alternativa, puede establecer manualmente los límites y del segundo eje para que coincidan con los del primero. Ejemplo:

from pylab import *

x = arange(0.0, 2.0, 0.01)
y1 = 3*sin(2*pi*x)
y2 = sin(2*pi*x)

figure()
ax1 = subplot(211)
plot(x, y1, "b")

subplot(212)
plot(x, y2, "g")
ylim( ax1.get_ylim() )        # set y-limit to match first axis

show()

texto alternativo


12 para la respuesta № 2

Busqué más en el sitio web de matplotlib y encontré una manera de hacerlo. Si alguien tiene una mejor manera, por favor hágamelo saber.

En la primera subparcela reemplazar plt.subplot(211, axisbg = "w") por ax1 = plt.subplot(211, axisbg = "w") . Luego, en la segunda subparcela, agrega los argumentos sharex = ax1 y sharey = ax1 al comando subplot. Es decir, el segundo comando de subplot ahora se verá:

plt.subplot(212, sharex = ax1, sharey = ax1)

Esto resuelve el problema. Pero si hay otras alternativas mejores, por favor hágamelo saber.