r - x軸刻度 - 繪圖參數type已過時




R-將多重繪圖保存到文件 (2)

使用example (R cookbook),它適用於我

png("chickweight.png")
multiplot(p1, p2, p3, p4, cols=2)
dev.off()

我非常感謝您對以下問題的幫助。 我知道將單個繪圖保存到文件的幾種方法。 我的問題是:如何正確地將多個時間段保存到文件?

首先,我不是一位經驗豐富的R用戶。 我使用ggplot2創建我的圖,我應該提到的另一件事是我使用RStudio GUI。 使用R Cookbook中的一個example ,我可以在一個窗口中創建多個圖。

我想將這個所謂的多重時隙保存到一個文件(最好是jpeg),但不知何故不能這樣做。

我正在創建如下的多時隙:

##define multiplot function
    multiplot <- function(..., plotlist=NULL, cols) {
        require(grid)

        # Make a list from the ... arguments and plotlist
        plots <- c(list(...), plotlist)

        numPlots = length(plots)

        # Make the panel
        plotCols = cols                          # Number of columns of plots
        plotRows = ceiling(numPlots/plotCols) # Number of rows needed, calculated from # of cols

        # Set up the page
        grid.newpage()
        pushViewport(viewport(layout = grid.layout(plotRows, plotCols)))
        vplayout <- function(x, y)
            viewport(layout.pos.row = x, layout.pos.col = y)

        # Make each plot, in the correct location
        for (i in 1:numPlots) {
            curRow = ceiling(i/plotCols)
            curCol = (i-1) %% plotCols + 1
            print(plots[[i]], vp = vplayout(curRow, curCol ))
        }

    }

## define subplots (short example here, I specified some more aesthetics in my script)
plot1a <- qplot(variable1,variable2,data=Mydataframe1)
plot1b <- qplot(variable1,variable3,data=Mydataframe1)  
plot1c <- qplot(variable1,variable2,data=Mydataframe2)
plot1d <- qplot(variable1,variable3,data=Mydataframe2)  

## plot in one frame
Myplot <- multiplot(plot1a,plot1b,plot1c,plot1d, cols=2)

這給出了期望的結果。 當我嘗試保存到文件時出現問題。 我可以在RStudio中手動執行此操作(使用導出 - >將繪圖另存為圖像),但我想在腳本中運行所有內容。 我設法只保存subplot1d(即last_plot()),而不是完整的多時隙。

到目前為止我嘗試了什麼:

  1. 使用ggsave

    ggsave(filename = "D:/R/plots/Myplots.jpg")
    

    這導致僅保存子圖1d。

  2. 使用jpeg(),print()和dev.off()

    jpeg(filename = "Myplot.jpg", pointsize =12, quality = 200, bg = "white", res = NA, restoreConsole = TRUE)
    print(Myplot)
    dev.off()
    

    這導致完全白色的圖像(只是我假設的背景)。 print(Myplot)返回NULL。

不知道我在這裡做錯了什麼。 我缺乏理解R是我試圖找到解決方案的原因。 任何人都可以解釋我做錯了什麼,也許可以建議一種解決我的問題的方法嗎?


因為Myplot是多重Myplot函數的返回值,它不返回任何內容(它的作用是打印圖形)。 您需要在打開jpeg設備的情況下調用multiplot:

jpeg(filename = "Myplot.jpg", pointsize =12, quality = 200, bg = "white", res = NA, restoreConsole = TRUE)
multiplot(plot1a,plot1b,plot1c,plot1d, cols=2)
dev.off()

應該管用。





ggplot2