La ttwig de pandas no se muestra

Cuando se usa esto en un script (no IPython), no sucede nada, es decir, la ventana de trazado no aparece:

import numpy as np import pandas as pd ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000)) ts.plot() 

Incluso cuando se agrega time.sleep(5) , todavía no hay nada. ¿Por qué?

¿Hay alguna forma de hacerlo sin tener que llamar manualmente a matplotlib ?

Una vez que haya realizado su ttwig, debe decirle a matplotlib que lo show . La forma habitual de hacer cosas es importar matplotlib.pyplot y llamar a show desde allí:

 import numpy as np import pandas as pd import matplotlib.pyplot as plt ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000)) ts.plot() plt.show() 

Ya que ha solicitado no hacer eso (¿por qué?), Podría usar lo siguiente [NOTA: parece que esto ya no funciona con las versiones más nuevas de pandas ]:

 import numpy as np import pandas as pd ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000)) ts.plot() pd.tseries.plotting.pylab.show() 

Pero todo lo que está haciendo allí es encontrar un lugar donde se haya importado matplotlib en pandas y llamar a la misma función de show desde allí.

¿Estás tratando de evitar llamar a matplotlib en un esfuerzo por acelerar las cosas? Si es así, entonces realmente no estás acelerando nada, ya que los pandas ya importan pyplot :

 python -mtimeit -s 'import pandas as pd' 100000000 loops, best of 3: 0.0122 usec per loop python -mtimeit -s 'import pandas as pd; import matplotlib.pyplot as plt' 100000000 loops, best of 3: 0.0125 usec per loop 

Finalmente, la razón por la que el ejemplo que vinculó en los comentarios no necesita la llamada a matplotlib es porque se está ejecutando de manera interactiva en un iPython notebook , no en un script.

En caso de que estés usando matplotlib, y aún así, las cosas no se muestran en la notebook iPython (o en Jupyter Lab también), recuerda configurar la opción en línea para matplotlib en la notebook.

 import matplotlib.pyplot as plt %matplotlib inline 

Entonces el siguiente código funcionará perfectamente:

 fig, ax = plt.subplots(figsize=(16,9)); change_per_ins.plot(ax=ax, kind='hist') 

Si no configura la opción en línea, no se mostrará y al agregar un plt.show() al final, obtendrá resultados duplicados.