Подтвердить что ты не робот

Функция сохранения ggplot

Я хотел бы создать функцию для сохранения графиков (от ggplot). У меня много таких сюжетов, поэтому это поможет мне работать более эффективно.

Вот кадр данных:

### creating data frame
music <- c("Blues", "Hip-hop", "Jazz", "Metal", "Rock")
number <- c(8, 7, 4, 6, 11)
df.music <- data.frame(music, number)
colnames(df.music) <- c("Music", "Amount")

Затем я создаю график:

### creating bar graph (this part is OK)
myplot <- ggplot(data=df.music, aes(x=music, y=number)) +
 geom_bar(stat="identity") +
 xlab(colnames(df.music)[1]) +
 ylab(colnames(df.music)[2]) +
 ylim(c(0,11)) +
 ggtitle("Ulubiony typ muzyki wśród studentów")

Теперь я хочу сохранить этот график в .pdf.

Это работает:

pdf("Myplot.pdf", width=5, height=5)
plot.music.bad
dev.off()

Однако я хотел бы автоматизировать это с помощью функции, которая принимает в качестве аргумента сюжет, который я хочу сохранить. Я точно не знаю, как это сделать; вот что я пробовал:

save <- function(myplot){
  plot<- myplot
  pdf("lol.pdf", width=5, height=5)
  plot
  dev.off()
}
### .pdf file is created but doesn't work
save(myplot) 

Итак, как я могу это сделать? Спасибо за вашу помощь. Юстина

4b9b3361

Ответ 1

Вы можете использовать print() для сохранения графиков, полученных из ggplot2, в файл.

Сначала определите свою функцию для сохранения графиков:

savePlot <- function(myPlot) {
        pdf("myPlot.pdf")
        print(myPlot)
        dev.off()
}

Создайте свой сюжет:

 myPlot <- ggplot(ggplot(data=df.music, aes(x=music, y=number)) +
 geom_bar(stat="identity") +
 xlab(colnames(df.music)[1]) +
 ylab(colnames(df.music)[2]) +
 ylim(c(0,11)) +
 ggtitle("Ulubiony typ muzyki wśród studentów")

И, наконец, вызовите функцию:

savePlot(myPlot)

В качестве альтернативы вы можете просто использовать ggsave() после создания вашего сюжета:

ggsave(filename="myPlot.pdf", plot=myPlot)

Ответ 2

Следующее было полезно для меня, возможно, и для кого-то другого. Можно сохранить последний график без явного указания его также.

ggsave("filename.pdf", 
 plot = last_plot(), # or give ggplot object name as in myPlot,
 width = 5, height = 5, 
 units = "in", # other options c("in", "cm", "mm"), 
 dpi = 300)

Изменить: добавлена ​​отсутствующая запятая.