R -сохранить мультиплот в файл

Буду очень признателен за помощь в решении следующей проблемы. Я знаю несколько способов сохранить один сюжет в файл. Мой вопрос: :Как мне правильно сохранить мультиплот в файл?

Начну с того, что я не опытный пользователь R. Я использую ggplot2 для создания своих графиков, и еще одна вещь, которую я, вероятно, должен упомянуть, это то, что я использую графический интерфейс RStudio. Используя пример из R Cookbook, я могу создать несколько графиков в одном окне.

Я хотел бы сохранить это так называемое мультиплот -в файл (предпочтительно в формате 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 (, который является последним _сюжетом ()), а не полным мультиграфиком.

Что я пробовал до сих пор:

  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 является причиной того, что я застрял, пытаясь найти решение. Может ли кто-нибудь объяснить, что я делаю неправильно, и, возможно, предложить способ решения моей проблемы (s )?

28
задан Paul Hiemstra 30 July 2012 в 12:42
поделиться