1

我经常在没有 X11 的 linux 集群计算节点上运行 jupyter IPython notebook,没有任何问题。但是,在相同的设置上运行 R 内核并不能很好地工作。

机器详情如下:

  • CentOS 7.2
  • 具有 X11、png 和 cairo 功能的 R 3.3.1
  • 蟒蛇 4.0.0 (python 2.7.11)

在日志中运行第一个单元后,刚启动笔记本会导致内核崩溃:

unable to open connection to X11 display ''

我可以通过启动笔记本来让它工作xvfb-run jupyter notebook。这让我可以在单元格中运行 R 命令,但是当我尝试生成绘图时,我得到以下信息

Error in grid.Call(L_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : X11  font -adobe-helvetica-%s-%s-*-*-%d-*-*-*-*-*-*-*, face 1 at size 9 could not be loaded

我想如果我可以安装 x11 字体,它会起作用,但这是在集群的计算节点上,我没有安装它们的管理权限。

使用 R 内核配置 jupyter notebook 以在没有 X11 的 linux 机器上生成图形的正确方法是什么?

4

1 回答 1

4

我认为在没有显示硬件和物理输入设备的 Linux 机器上运行笔记本时,我已经找到了 irkernel 所需的最低配置。

在虚拟帧缓冲 X 服务器xvfb下运行笔记本:

xvfb-run jupyter notebook

使用cairo代替 X11:

# Run this in a notebook cell, or put in .Rprofile
options(bitmapType="cairo")

设置jupyter.plot_mimetype。SVG 看起来好多了,对我来说效果很好。PNG也可以:

# Run this in a notebook cell, or put in .Rprofile
# svg much clearer, but won't rescale (scrolling works though)
options(jupyter.plot_mimetypes = "image/svg+xml")
# png had some artifacts, but had the nice feature that it would
# resize when the browser window changes size
#options(jupyter.plot_mimetypes = 'image/png')
# can easily resize plots (have to re-plot) with this:
#options(repr.plot.width=14, repr.plot.height=4)
于 2016-06-24T20:10:14.523 回答