jja*_*iak 37 pdf r function save ggplot2
我想创建一个保存图(from 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")
Run Code Online (Sandbox Code Playgroud)
然后我创建一个情节:
### 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")
Run Code Online (Sandbox Code Playgroud)
现在我想保存这个情节.pdf.
这有效:
pdf("Myplot.pdf", width=5, height=5)
plot.music.bad
dev.off()
Run Code Online (Sandbox Code Playgroud)
但是我想用一个函数自动化它,这个函数以我想要保存的图为参数.我不知道该怎么做; 这是我尝试过的:
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)
Run Code Online (Sandbox Code Playgroud)
那么,我该怎么做呢?
enr*_*ero 44
您可以使用print()将生成的图保存ggplot2到文件中.
首先,定义您的函数以保存图:
savePlot <- function(myPlot) {
pdf("myPlot.pdf")
print(myPlot)
dev.off()
}
Run Code Online (Sandbox Code Playgroud)
创建你的情节:
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")
Run Code Online (Sandbox Code Playgroud)
最后调用函数:
savePlot(myPlot)
Run Code Online (Sandbox Code Playgroud)
或者,您可以ggsave()在创建绘图后使用:
ggsave(filename="myPlot.pdf", plot=myPlot)
Run Code Online (Sandbox Code Playgroud)
Sur*_*ren 11
以下对我有用,也可能对其他人有用.人们可以保存最后的情节而不明确地引用它.
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)
Run Code Online (Sandbox Code Playgroud)
如果您想要一个图像文件而不是pdf文件,那么以下方法也可以
ggsave(filename="myPlot.jpg", plot=last_plot())
Run Code Online (Sandbox Code Playgroud)
或带有其他参数,如下所示。
ggsave(filename="myPlot.jpg", plot=lastplot(),
width = 10, height = 5,
units = "cm", # other options are "in", "cm", "mm"
dpi = 200
)
Run Code Online (Sandbox Code Playgroud)
还支持以下文件类型:“ eps”,“ ps”,“ tex”(pictex),“ pdf”,“ jpeg”,“ tiff”,“ png”,“ bmp”,“ svg”或“ wmf”。