在脚本(不是IPython)中使用此脚本时,什么也没有发生,即绘图窗口不出现:
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()
即使添加time.sleep(5)
,也什么也没有。为什么?
有没有一种方法,而不必手动调用matplotlib?
在脚本(不是IPython)中使用此脚本时,什么也没有发生,即绘图窗口不出现:
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()
即使添加time.sleep(5)
,也什么也没有。为什么?
有没有一种方法,而不必手动调用matplotlib?
import matplotlib.pyplot as plt
,plt.show()
ts.plot()
,什么也没有发生,程序在此之后立即终止。即使我time.sleep(10)
没有添加任何内容,也没有显示
.plot()
对panda对象执行操作将为我处理所有事情(即pandas代替我执行matplotlib的工作):请参见此示例。
Answers:
绘制完绘图后,需要告知matplotlib show
。做事的通常方法是从那里导入matplotlib.pyplot
并调用show
:
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()
由于您已请求不要这样做(为什么?),因此可以使用以下[注意:这似乎不再适用于更新版本的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()
但是您在这里所做的所有工作都是在中找到matplotlib
已导入的地方pandas
,然后show
从那里调用相同的函数。
您是否要避免打电话matplotlib
来加快速度?如果是这样,那么您实际上并没有加快速度,因为pandas
已经导入了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
最后,您在注释中链接的示例不需要调用matplotlib
的原因是因为它是在iPython notebook
而不是脚本中以交互方式运行的。
我刚刚
import matplotlib.pyplot as plt
%matplotlib inline
并添加行
plt.show()
在df.plot()旁边,效果很好
%matplotlib inline
(这不是可在脚本中使用的标准Python)。
%matplotlib inline
在ipython / jupyter笔记本中使用...
ts.plot()
吗?