¿Cómo le digo a Matplotlib que cree una segunda ttwig (nueva) y luego una ttwig en la anterior?

Quiero trazar datos, luego crear una nueva figura y trazar datos2, y finalmente volver a la ttwig original y trazar datos3, un poco como esto:

import numpy as np import matplotlib as plt x = arange(5) y = np.exp(5) plt.figure() plt.plot(x, y) z = np.sin(x) plt.figure() plt.plot(x, z) w = np.cos(x) plt.figure("""first figure""") # Here's the part I need plt.plot(x, w) 

FYI ¿Cómo le digo a matplotlib que he terminado con una ttwig? hace algo similar, pero no del todo! No me deja acceder a esa ttwig original.

Si te encuentras haciendo cosas como estas regularmente, puede valer la pena investigar la interfaz orientada a objetos para matplotlib. En tu caso:

 import matplotlib.pyplot as plt import numpy as np x = np.arange(5) y = np.exp(x) fig1, ax1 = plt.subplots() ax1.plot(x, y) ax1.set_title("Axis 1 title") ax1.set_xlabel("X-label for axis 1") z = np.sin(x) fig2, (ax2, ax3) = plt.subplots(nrows=2, ncols=1) # two axes on figure ax2.plot(x, z) ax3.plot(x, -z) w = np.cos(x) ax1.plot(x, w) # can continue plotting on the first axis 

Es un poco más detallado, pero es mucho más claro y fácil de seguir, especialmente con varias figuras, cada una con múltiples subplots.

Cuando llames a la figure , simplemente numera la ttwig.

 x = arange(5) y = np.exp(5) plt.figure(0) plt.plot(x, y) z = np.sin(x) plt.figure(1) plt.plot(x, z) w = np.cos(x) plt.figure(0) # Here's the part I need plt.plot(x, w) 

Edición: Tenga en cuenta que puede numerar los gráficos como desee (aquí, comenzando desde 0 ), pero si no proporciona un número con la figura cuando crea uno nuevo, la numeración automática comenzará en 1 (“Estilo de Matlab “según los documentos).

Sin embargo, la numeración comienza en 1 , por lo que:

 x = arange(5) y = np.exp(5) plt.figure(1) plt.plot(x, y) z = np.sin(x) plt.figure(2) plt.plot(x, z) w = np.cos(x) plt.figure(1) # Here's the part I need, but numbering starts at 1! plt.plot(x, w) 

Además, si tiene varios ejes en una figura, como subplots, use el comando de axes(h) donde h es el controlador del objeto de ejes deseado para enfocar esos ejes.

(No tengo privilegios de comentarios todavía, perdón por la nueva respuesta)

Una forma que encontré después de algunas dificultades es crear una función que obtenga la matriz de data_plot, el nombre de archivo y el orden como parámetro para crear diagtwigs de caja a partir de los datos dados en la figura ordenada (órdenes diferentes = figuras diferentes) y guardarla bajo el nombre de archivo dado.

 def plotFigure(data_plot,file_name,order): fig = plt.figure(order, figsize=(9, 6)) ax = fig.add_subplot(111) bp = ax.boxplot(data_plot) fig.savefig(file_name, bbox_inches='tight') plt.close()