我在远程服务器上远程运行ipython。我使用serveraddress:8888 / etc访问它来为我的笔记本编写代码。
当我使用matplotlib时,情节是内联的。有没有办法远程发送数据,以便打开绘图窗口?我想在我的本地机器上matplotlib上的整个交互式环境以及服务器机器上的所有数字运算?这是一个非常基本的东西....但不知何故,经过谷歌破坏了很长一段时间后,我无法弄明白。
答案 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)
有几种可能性
如果您的远程计算机有点不合适,您可以使用X Windows(然后您的会话位于远程计算机上并显示在本地计算机上)
mpld3
bokeh
和iPython notebook
nbagg
后端matplotlib
。¨
备选方案#1要求您在计算机上安装X服务器并在两台计算机之间建立连接(可能通过ssh进行隧道连接等)因此,这取决于操作系统,性能取决于两台计算机之间的连接
替代品#2和#3是非常新的但很有希望。它们有不同的方法,mpl3d
允许使用标准matplotlib
绘图命令,但使用大型数据集bokeh
可能更有用。
备选方案#4可能是最终解决方案(请参阅tcaswell
的评论),但尚未使用matplotlib
的开发版本(即可能存在一些安装挑战)尚未提供。另一方面,如果你可以屏住呼吸一周,那么1.4.0就会消失。
答案 2 :(得分:0)
你想要获得常规(可缩放)绘图窗口,对吧?我认为你不能在同一个内核中执行它,不幸的是,你不能从内联切换到qt等因为后端已被选中:你对matplotlib.use()
的调用总是在{{1}之前}}