【问题标题】:Remote ipython kernel not displaying plots远程 ipython 内核不显示绘图
【发布时间】:2015-05-04 02:35:09
【问题描述】:

我的设置是在 linux 服务器上远程运行 ipython notebook,然后通过 ssh 隧道从 OSX 连接到它。

我可以确认 X 转发工作正常,并且从 ipython 启动的同一终端我可以使用 gnuplot 等。

在我本地机器上的 ipython 会话中尝试执行类似操作时

import matplotlib as mpl
mpl.use("GTK3cairo")
import matplotlib.pyplot as plt
plt.plot([1,2,3,4],'*-')

我得到的只是[<matplotlib.lines.Line2D at 0x54bcc90>]。我尝试了各种其他后端,结果相同。当使用%pylab inline 时,图会出现,但我希望它们在单独的窗口中。

我想 X 转发仍然有问题 - 调试它的最佳方法是什么?欢迎所有建议。

【问题讨论】:

  • 你试过plt.show() 吗?
  • 您可以通过 LAN 上的浏览​​器使用 ipython.org/ipython-doc/1/interactive/public_server.html 访问 ipython notebook,而不是 ssh Tunel
  • @plonser:解决了,谢谢!!!!
  • @wrdeman:我实际上一直在这样做 - 我真正的意思是我通过 ssh 隧道访问服务器。
  • 1) 不要使用 %pylab ,使用 %matplotlib,2) 内核在可能不继承环境变量的子进程中运行,因此没有 X-Forward。

标签: python matplotlib ipython ipython-notebook x11-forwarding


【解决方案1】:
  1. 连接服务器时,使用-L(进行本地端口转发)而不是-X(进行图形输出转发),如下所示:

    ssh -L 8000:localhost:8888 your_user_name@your_server_ip
    
  2. 在您的代码中,在导入 pyplot 之前使用 %matplotlib inline 以预先加载后端并以 ; 结束,如下所示:

    %matplotlib inline
    from matplotlib import pyplot as plt
    
    plt.figure()
    plt.imshow(sample_image)
    plt.show();
    

【讨论】:

  • 非常有帮助,谢谢!无需以;结尾
猜你喜欢
  • 2014-05-16
  • 1970-01-01
  • 2012-06-05
  • 1970-01-01
  • 2017-05-22
  • 1970-01-01
  • 2018-06-08
  • 2011-03-28
  • 2019-08-19
相关资源
最近更新 更多