运行matplotlib与nbagg交互的linux虚拟机上的ipython笔记本

2024-10-01 15:31:53 发布

您现在位置:Python中文网/ 问答频道 /正文

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

以下是我所做的:

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

  2. 我需要将matplotlib升级到最新版本,因为它具有进行内联交互式绘图的功能。What's new in 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. 然后我就可以创建下面的截图了。然而,情况仍然很糟糕。那些按钮不是按钮。那是按钮的图像。请建议如何使这些按钮活起来!

哦。。。看看this如果这对你有帮助的话。在

谢谢!在

screenshot


Tags: install对象org功能版本confighttp绘图
1条回答
网友
1楼 · 发布于 2024-10-01 15:31:53

基本上你面临两个问题

  • %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体验。然而,快速尝试您的代码并不能产生期望的结果。按钮做出反应并执行回调,但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,因为这会导致一些副作用,请参见here。在

相关问题 更多 >

    热门问题