R图生成完全空白的PNG

时间:2015-02-06 21:32:56

标签: r fonts cluster-computing

我在Beowulf计算群集上运行R脚本,只要脚本在其中一个计算节点上运行,它就会生成一个空白PNG。在头节点上运行可以正常工作。

为了尝试诊断问题,我将我的脚本删除了:

#!/usr/bin/env Rscript

the_plot <- function()
{
    x <- seq(0, 1, length.out = 100)
    y <- pbeta(x, 1, 10)
    plot(
            x,
            y,
            xlab = "False Positive Rate",
            ylab = "Average true positive rate",
            type = "l"
    )

}

png(file='plot_test.png', width=400, height=300, type='cairo')
par(family='sans', cex=1, mar=c(5,5,1,1))
the_plot()
dev.off()

当我在头节点上运行它时,它会生成曲线,轴和标签。在计算节点上,标签不会出现,因此可能是字体问题。

1 个答案:

答案 0 :(得分:1)

我之前遇到过相同症状的问题,加上这样的错误信息:

  

Fontconfig错误:无法加载默认配置文件

我在stata.com's support page上发现了错误,我通过将/etc/fonts映射到计算节点来摆脱它。错误消息消失了,但是这些图仍然是空白的,所以可能还有另一个文件夹仍然需要映射。

我安装了strace并跟踪了在头节点上成功运行脚本时正在加载的文件。我还在计算节点上运行失败时跟踪。

strace -r -o strace.txt ./plot_test.R
bpsh 0 strace -r -o strace_n0.txt ./plot_test.R

清除文件中的大量噪音并比较两者之后,我发现脚本正在加载/usr/lib64/libcairo.so.2/usr/share/fonts/var/cache/fontconfig。这些都没有映射到计算节点。

将文件夹映射到计算节点由/etc/exports/etc/beowulf/fstab控制,如Scyld documentation中所述。映射完所有这些文件夹后,这些图表都有效。