如何在本地机器上显示matplotlib图?

时间:2014-08-22 05:17:33

标签: python matplotlib

我在远程服务器上远程运行ipython。我使用serveraddress:8888 / etc访问它来为我的笔记本编写代码。

当我使用matplotlib时,情节是内联的。有没有办法远程发送数据,以便打开绘图窗口?我想在我的本地机器上matplotlib上的整个交互式环境以及服务器机器上的所有数字运算?这是一个非常基本的东西....但不知何故,经过谷歌破坏了很长一段时间后,我无法弄明白。

3 个答案:

答案 0 :(得分:6)

即将发布的版本(1.4.0,应该在2014年8月底发布,发布候选版本可用)将附带nbagg后端,该后端提供交互式数据,无需去本地客户或诉诸使用d3。您在笔记本中所需要做的就是:

import matplotlib
matplotlib.use('nbagg')
from matplotlib import pyplot as plt

然后绘制

plt.plot(range(3))
plt.show()

如果您现在想要尝试这个,请从源代码构建或查看其中一个候选版本。

使用nbagg和mpld3 / bokeh有两个主要区别。

首先,你没有跨库接口的接口(或学习js!)。我的理解是,他们都创造了一个人物,废弃它(这并不完美,因为mpl不是为了让这一点变得容易而设计的)。使用nbagg鼠标和键盘回拨应该无需翻译,我不认为它们目前可以导出到d3。

第二个是nbagg所有渲染都发生在服务器上,基于d3的库所有数据必须天真地运送到浏览器(散景正在努力使这个更聪明,只发送你可以看到的数据在一个有用的决议)。使用nbagg,网络中唯一出现的是png deltas。

答案 1 :(得分:3)

有几种可能性

  1. 如果您的远程计算机有点不合适,您可以使用X Windows(然后您的会话位于远程计算机上并显示在本地计算机上)

  2. mpld3

  3. bokeh和iPython notebook

  4. nbagg后端matplotlib。¨

  5. 备选方案#1要求您在计算机上安装X服务器并在两台计算机之间建立连接(可能通过ssh进行隧道连接等)因此,这取决于操作系统,性能取决于两台计算机之间的连接

    替代品#2和#3是非常新的但很有希望。它们有不同的方法,mpl3d允许使用标准matplotlib绘图命令,但使用大型数据集bokeh可能更有用。

    备选方案#4可能是最终解决方案(请参阅tcaswell的评论),但尚未使用matplotlib的开发版本(即可能存在一些安装挑战)尚未提供。另一方面,如果你可以屏住呼吸一周,那么1.4.0就会消失。

答案 2 :(得分:0)

你想要获得常规(可缩放)绘图窗口,对吧?我认为你不能在同一个内核中执行它,不幸的是,你不能从内联切换到qt等因为后端已被选中:你对matplotlib.use()的调用总是在{{1}之前}}