熊猫情节不显示
Posted
技术标签:
【中文标题】熊猫情节不显示【英文标题】:Pandas plot doesn't show 【发布时间】:2016-03-24 15:54:07 【问题描述】:在脚本(不是 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?
【问题讨论】:
你从ts.plot()
得到任何输出吗?
“手动调用 matplotlib”是什么意思?通常的方式是import matplotlib.pyplot as plt
,plt.show()
@itzy :当ts.plot()
时没有任何反应,程序在此之后立即终止。即使我添加time.sleep(10)
也不会显示任何内容
@maxymoo :我认为在 panda 对象上执行 .plot()
将为我处理所有事情(即 pandas 完成 matplotlib 工作,而不是我):参见 this example。
【参考方案1】:
一旦你完成了你的情节,你需要告诉 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
中,您可以找到 matplotlib 的后门,如下例所示。 注意:这不再适用于现代版本的 pandas
,我仍然建议单独导入 matplotlib,如上例所示。
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
最后,example you linked in comments 不需要调用matplotlib
的原因是它在iPython notebook
中交互运行,而不是在脚本中。
【讨论】:
当我运行“pd.tseries.plotting.pylab.show()”时,我得到“padnas.tseries”没有属性绘图,它已经过时了吗?你确实在 2015 年写过......跨度> 是的,看起来 matplotlib 的后门已经不存在了。无论如何,我仍然推荐第一个选项 谢谢。我认为 API 设计可能会更好。奇怪的是,我们需要了解 matplotlib 才能使用 panda.plot【参考方案2】:如果您使用的是 matplotlib,
,但 iPython 笔记本(或 Jupyter Lab)中仍然没有显示内容,请记住在笔记本中为 matplotlib
设置内联选项。
import matplotlib.pyplot as plt
%matplotlib inline
那么下面的代码就可以完美运行了:
fig, ax = plt.subplots(figsize=(16,9));
change_per_ins.plot(ax=ax, kind='hist')
如果您不设置 inline 选项,它将不会显示,并且在最后添加 plt.show()
您将获得重复的输出。
【讨论】:
【参考方案3】:我刚刚做了
import matplotlib.pyplot as plt
%matplotlib inline
并添加一行
plt.show()
在 df.plot() 旁边,它适用于
【讨论】:
请包括您使用哪个环境能够插入%matplotlib inline
(这不是可以在脚本中使用的标准Python)。
%matplotlib inline
用于 ipython/jupyter notebook...
是的,如果你使用的是像pycharm这样的IDE(我一直在使用它),则不需要添加%matplotlib inline。【参考方案4】:
其他答案涉及导入 matplotlib.pyplot
和/或手动调用第二个函数。
相反,您可以将matplotlib
配置为interactive mode 及其configuration files。
只需添加一行
interactive: True
到以下位置之一的名为 matplotlibrc
的文件:
matplotlib.get_configdir()
指定的平台特定用户目录中
在类 unix 系统上,通常是 /home/username/.config/matplotlib/
在 Windows C:\\Documents and Settings\\username\\.matplotlib\\
【讨论】:
以上是关于熊猫情节不显示的主要内容,如果未能解决你的问题,请参考以下文章