Cuando se usa esto en un script (no en IPython), no sucede nada, es decir, la ventana del gráfico 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 al agregar time.sleep(5), todavía no hay nada. ¿Por qué?
¿Hay alguna manera de hacerlo sin tener que llamar manualmente a matplotlib ?
python
pandas
matplotlib
Basj
fuente
fuente

ts.plot()?import matplotlib.pyplot as plt,plt.show()ts.plot(), el programa termina inmediatamente después de esto. Incluso si agregotime.sleep(10)nada se muestra.plot()en un objeto panda manejaría todo por mí (es decir, los pandas hacen el trabajo matplotlib, en lugar de mí): vea este ejemplo .Respuestas:
Una vez que haya hecho su diagrama, debe decírselo a matplotlib
show. La forma habitual de hacer las cosas es importarmatplotlib.pyploty llamarshowdesde 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()Dado que solicitó no hacer eso (¿por qué?), Puede usar el siguiente [NOTA: Parece que esto ya no funciona con las versiones más recientes 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 que
matplotlibse ha importadopandasy llamar a la mismashowfunción desde allí.¿Está tratando de evitar llamar
matplotliben un esfuerzo por acelerar las cosas? Si es así, realmente no está acelerando nada, ya quepandasya importapyplot: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 loopFinalmente, la razón por la que el ejemplo que vinculó en los comentarios no necesita la llamada
matplotlibes porque se está ejecutando interactivamente en uniPython notebook, no en un script.fuente
En caso de que esté usando
matplotlib,y aún, las cosas no aparezcan en el cuaderno iPython (o también en Jupyter Lab) recuerde configurar la opciónmatplotliben línea para en el cuaderno.import matplotlib.pyplot as plt %matplotlib inlineEntonces, 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 aparecerá y al agregar un
plt.show()al final obtendrá salidas duplicadas.fuente
Yo hice solo
import matplotlib.pyplot as plt %matplotlib inliney agrega una línea
junto a df.plot () y funcionó bien para
fuente
%matplotlib inline(este no es Python estándar que se puede usar en un script).%matplotlib inlinese utiliza en el cuaderno ipython / jupyter ...Las otras respuestas implican importar
matplotlib.pyploty / o llamar a alguna segunda función manualmente.En su lugar, puede configurarlo
matplotlibpara estar en modo interactivo con sus archivos de configuración .Simplemente agregue la línea
interactive: Truea un archivo llamado
matplotlibrcen uno de los siguientes lugares:matplotlib.get_configdir()/home/username/.config/matplotlib/C:\\Documents and Settings\\username\\.matplotlib\\fuente