熊猫情节不显示

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 pltplt.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\\

【讨论】:

以上是关于熊猫情节不显示的主要内容,如果未能解决你的问题,请参考以下文章

导航栏显示在情节提要中,但不显示在模拟器中

Shiny R:情节显示不佳

主从情节提要:表格视图不显示单元格(Objective-C)

熊猫不显示第一列[重复]

推送视图控制器不显示从情节提要添加的元素

使用 TabBar 的情节提要参考不显示 TabBar 项目图像和标题