代码之家  ›  专栏  ›  技术社区  ›  user2138149

R autoplot在逐行运行时工作,但在源代码为R脚本时不工作

  •  0
  • user2138149  · 技术社区  · 5 年前

    下面的代码在我从终端逐行将其输入到R run的实例中时起作用。(操作系统是Debian Linux。)

    但是当我试着跑的时候它不起作用 source("script.R") .

    具体地说,它不能用 autoplot . 写入pdf文件不起作用,如果我删除 pdf() dev.off() 行,则不打开包含图形的窗口。

    library(lubridate)
    library(ggplot2)
    library(matrixStats)
    library(forecast)
    
    df_input <- read.csv("postprocessed.csv")
    
    x <- df_input$time
    y <- df_input$value
    df <- data.frame(x, y)
    
    x <- df$x
    y <- df$y
    
    holtmodel <- holt(y)
    
    pdf("autoplot.pdf")
    autoplot(holtmodel)
    dev.off()
    

    为了方便起见,这里有一个数据文件。

    "","time","value"
    "1",1,2.61066016308988
    "2",2,3.41246054742996
    "3",3,3.8608767964033
    "4",4,4.28686048552237
    "5",5,4.4923132964825
    "6",6,4.50557049744317
    "7",7,4.50944447661246
    "8",8,4.51097373134893
    "9",9,4.48788748823809
    "10",10,4.34603985656981
    "11",11,4.28677073671406
    "12",12,4.20065901625172
    "13",13,4.02514194962519
    "14",14,3.91360194972916
    "15",15,3.85865748409081
    "16",16,3.81318053258601
    "17",17,3.70380706527433
    "18",18,3.61552922363713
    "19",19,3.61405310598722
    "20",20,3.64591327503384
    "21",21,3.70234435835577
    "22",22,3.73503970503372
    "23",23,3.81003078640584
    "24",24,3.88201196162666
    "25",25,3.89872518158949
    "26",26,3.97432743542362
    "27",27,4.2523675144599
    "28",28,4.34654855854847
    "29",29,4.49276038902684
    "30",30,4.67830892029687
    "31",31,4.91896819673664
    "32",32,5.04350767355202
    "33",33,5.09073406942046
    "34",34,5.18510849382162
    "35",35,5.18353176529036
    "36",36,5.2210776270173
    "37",37,5.22643491929207
    "38",38,5.11137006553725
    "39",39,5.01052467981257
    "40",40,5.0361056705898
    "41",41,5.18149486951409
    "42",42,5.36334869132276
    "43",43,5.43053620818444
    "44",44,5.60001072279525
    

    相当困惑,因为它看起来像一个琐碎的脚本!

    1 回复  |  直到 5 年前
        1
  •  2
  •   Sirius    5 年前

    更改为:

    print(autoplot(holtmodel))
    

    当你单步执行代码时,你会得到一个隐式的 print(...) 每个代码行上的语句。当您使用source()时,您不会使用.ggplot(以及其他!)使用print()触发它们的绘图(这样您就可以方便地逐步建立绘图,而不必等待闪烁的图形)

    推荐文章