将图表保存到工作目录 - 图表是空白的?

时间:2018-02-04 16:42:36

标签: r plot cairo

我想自动将我的绘图输出写入我的工作目录。此外,我已经以某种方式构建了我的脚本,因此一些计算步骤和绘图依赖于前面的变量。像这样,如果不再需要某些计算步骤,或者我正在计算不同的场景,则会跳过一些计算步骤。

我遇到以下问题:如果我在没有if条件的情况下调用该函数,则该图正确保存到工作目录中。但是,一旦我在if条件下调用该函数,只会将空白图写入工作目录。

以下可重现的示例演示了该问题(请替换工作目录的路径):

##Set WD (!! replace with own path)

setwd("C:/Users/deca/Desktop")

##Initiate packages

install.packages("effects")
install.packages("Cairo")

require(effects)
require(Cairo)

##Initiate data set and condition

varL <- rnorm(100, mean = 1000, sd = 10)
varP <- rnorm(100, mean = 5)
entry <- as.factor(sample(0:1, 100, replace = TRUE))

dat <- data.frame(varL, varP, entry)

condition <- "YES"

##Define regression

hx1 <- glm(entry ~ varL*varP, data = dat, family = binomial(link = "probit"))

##Plot within R graphic device - works perfectly fine

plot(effect("varL:varP", hx1))

##Save plot to WD without if condition - works fine

Cairo(file=as.character("plot1"), 
      type = "png",
      units = "px", 
      width = 715, 
      height = 489, 
      pointsize = 12, 
      dpi="auto")
plot(effect("varL:varP", hx1))
dev.off()

##Save plot to WD with if condition - This is very the problem surfaces

if(condition == "YES") {

    Cairo(file=as.character("plot2"), 
        type = "png",
        units = "px", 
        width = 715, 
        height = 489, 
        pointsize = 12, 
        dpi="auto")
  plot(effect("varL:varP", hx1))
  dev.off()

}

这个问题来自哪里?如何在Cairo内解决?如何将图表保存到WD以便它可以使用,可能使用Cairo以外的其他解决方案?

0 个答案:

没有答案