繁体   English   中英

Linux上的ipython笔记本运行matplotlib与nbagg交互的VM

[英]ipython notebook on linux VM running matplotlib interactive with nbagg

我希望按钮和其他交互式matplotlib对象出现在我的ipython笔记本中。 截图

这就是我所做的:

  1. 安装了http://datasciencetoolbox.org ,它是一个安装了ipython和matplotlib版本1.3.1的流浪盒。

  2. 我需要将matplotlib升级到最新版本,因为它具有执行内联交互式绘图的功能。 Matplotlib 1.4.1中的新功能
    我需要运行sudo apt-get install pkg-config
    sudo pip install matplotlib --upgrade以便实现这一目标。

  3. 然后,为了生成下面的好(即无错误)屏幕截图,我进入了.ipython/dst-profile/ipython_notebook_config.py文件,删除了关于IPKernelApp.pylab='inline' ,以便能够运行matplotlib.use('nbagg')命令。

  4. 然后我就可以在下面创建截图了。 然而,事情看起来仍然很糟糕。 那些按钮不是按钮。 那是按钮的图像。 请告知如何使这些按钮变得生动!

呵呵......,并检查出如果这能帮助你帮助我。

谢谢!

截图

基本上你面临着两个问题

  • %pylab inline调用会覆盖matplotlib.use('nbagg')调用,以使用内联后端而不是你真正想要的nbagg后端。 如果您使用最新版本的IPython(2.3),您可以直接使用%matplotlib nbagg (或%matplotlib notebook )来加载nbagg后端而不是%pylab调用。

  • 一旦你启用了nbagg后端,你需要明确地显示它,即。 在脚本末尾添加一个plt.show()调用 - > 更新 :使用IPython 2.3.1不再需要它(感谢@tcaswell提示)

通过这种方式,您可以获得嵌入在IPython笔记本中的交互式matplotlib体验。 但是,快速尝试代码并不能达到预期的效果。 Button做出反应并执行回调,但print调用没有显示任何内容。 无论如何,要看到它正在运行,请尝试以下简单示例(需要IPython 2.3):

%matplotlib nbagg
from matplotlib.widgets import Button
import matplotlib.pyplot as plt
def callback(event):
    plt.text(event.xdata, event.ydata, 'clicked')

f,a = plt.subplots(1)
b1 = Button(a,'Button1')
b1.on_clicked(callback)
plt.show()

顺便说一句。 强烈建议使用%matplotlib而不是%pylab,因为后来会产生一些副作用,请参见此处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM