禁用R中的绘图显示

时间:2014-07-15 13:11:31

标签: r plot

我试图关闭R中的情节显示。

我读了Disable GUI, graphics devices in R但是给出的唯一解决方案是将绘图写入文件。

如果我不想污染工作空间怎么办?如果我没有写入权限怎么办? 我试过了options(device=NULL),但它没有用。

上下文是包NbClust:我想要NbClust()返回但我不想显示它的情节。

提前致谢!

编辑:这是一个可重复的例子,使用来自拨浪鼓包的数据:)

data(wine, package="rattle")
df <- scale (wine[-1])

library(NbClust)

# This produces a graph output which I don't want
nc <- NbClust(df, min.nc=2, max.nc=15, method="kmeans")

# This is the plot I want ;)
barplot(table(nc$Best.n[1,]), 
    xlab="Numer of Clusters", ylab="Number of Criteria",
    main="Number of Clusters Chosen by 26 Criteria")

2 个答案:

答案 0 :(得分:6)

您可以在

中打包电话
pdf(file = NULL)

dev.off()

这会将所有输出发送到一个有效隐藏它的空文件。

答案 1 :(得分:2)

幸运的是,似乎NbClust是一个巨大的混乱函数,其中包含一些其他函数和许多看起来很奇怪的代码。绘图是在两个地方之一完成的。

创建NbClust的副本:

> MyNbClust = NbClust

然后编辑此功能。将标题更改为:

MyNbClust <-
    function (data, diss = "NULL", distance = "euclidean", min.nc = 2, 
              max.nc = 15, method = "ward", index = "all", alphaBeale = 0.1, plotetc=FALSE) 
{

然后将绘图代码包装在if块中。 1588号线附近:

    if(plotetc){
        par(mfrow = c(1, 2))
        [etc]
        cat(paste(...
    }

并且类似于第1610行。保存。现在使用:

 nc = MyNbClust(...etc....)

除非您添加plotetc=TRUE,否则您看不到任何情节。

然后让开发人员包含你的补丁。