保存ggplot的功能

时间:2014-03-30 10:13:40

标签: r function pdf ggplot2 save

我想创建一个保存图表的函数(来自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) 

那么,我该怎么办呢?

4 个答案:

答案 0 :(得分:43)

您可以使用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)

答案 1 :(得分:8)

以下对我有用,也可能对其他人有用。人们可以保存最后的情节而不用明确地引用它。

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)

答案 2 :(得分:4)

如果你想要一个图像文件而不是一个pdf,那么以下工作

ggsave(filename="myPlot.jpg", plot=last_plot())

或附加参数,如下所示。

ggsave(filename="myPlot.jpg", plot=lastplot(),
       width = 10, height = 5, 
       units = "cm", # other options are "in", "cm", "mm" 
       dpi = 200
       )

还支持以下文件类型&#34; eps&#34;,&#34; ps&#34;,&#34; tex&#34; (pictex),&#34; pdf&#34;,&#34; jpeg&#34;,&#34; tiff&#34;,&#34; png&#34;,&#34; bmp&#34;,& #34; SVG&#34;或&#34; wmf&#34;。

答案 3 :(得分:0)

如果您在python中为plotnine使用ggplot2

myplot.save(filename="bid_density.png", format='png', \
width = 12, height = 12, units = "in")

这是文档的link