[英]R Saving an annotated ggplot as a png file
I am having problems saving annotated ggplot as a png file.我在将带注释的 ggplot 保存为 png 文件时遇到问题。
For example from: How to place grobs with annotation_custom() at precise areas of the plot region?例如来自: How to place grobs with annotation_custom() 在绘图区域的精确区域?
library(gtable)
library(ggplot2)
library(plyr)
set.seed(1)
d <- data.frame(x=rep(1:10, 5),
y=rnorm(50),
g = gl(5,10))
# example plot
p <- ggplot(d, aes(x,y,colour=g)) +
geom_line() +
scale_x_continuous(expand=c(0,0))+
theme(legend.position="top",
plot.margin=unit(c(1,0,0,0),"line"))
# dummy data for the legend plot
# built with the same y axis (same limits, same expand factor)
d2 <- ddply(d, "g", summarise, x=0, y=y[length(y)])
d2$lab <- paste0("line #", seq_len(nrow(d2)))
plegend <- ggplot(d, aes(x,y, colour=g)) +
geom_blank() +
geom_segment(data=d2, aes(x=2, xend=0, y=y, yend=y),
arrow=arrow(length=unit(2,"mm"), type="closed")) +
geom_text(data=d2, aes(x=2.5,label=lab), hjust=0) +
scale_x_continuous(expand=c(0,0)) +
guides(colour="none")+
theme_minimal() + theme(line=element_blank(),
text=element_blank(),
panel.background=element_rect(fill="grey95", linetype=2))
# extract the panel only, we don't need the rest
gl <- gtable_filter(ggplotGrob(plegend), "panel")
# add a cell next to the main plot panel, and insert gl there
g <- ggplotGrob(p)
index <- subset(g$layout, name == "panel")
g <- gtable_add_cols(g, unit(1, "strwidth", "line # 1") + unit(1, "cm"))
g <- gtable_add_grob(g, gl, t = index$t, l=ncol(g),
b=index$b, r=ncol(g))
grid.newpage()
grid.draw(g)
I then tried to save the annotated chart as:然后我尝试将带注释的图表保存为:
ggsave(g, file="gtest.png" , width=4, height=4)
but this did not work.但这不起作用。
I also tried:我也试过:
png(paste("gtest1.png"), width = 800, height = 500)
g
print(g)
dev.off()
but this also did not work.但这也不起作用。
I would be grateful for some help on what I am doing wrong.对于我做错了什么的帮助,我将不胜感激。
This worked for me with your example code这与您的示例代码对我有用
dev.print(file="test.png", device=png, width=800)
I use it regularly for saving plots not just for ggplot2
我经常使用它来保存图,而不仅仅是
ggplot2
It looks like there is an error in your ggsave()
line:您的
ggsave()
行中似乎有错误:
ggsave(g, file="gtest.png" , width=4, height=4)
The syntax for the ggsave()
command is: ggsave()
命令的语法是:
ggsave( filename, plot = last_plot(), device = NULL, path = NULL, scale = 1, width = NA, height = NA, units = c("in", "cm", "mm"), dpi = 300, limitsize = TRUE, ... )
ggsave(文件名,绘图 = last_plot(),设备 = NULL,路径 = NULL,比例 = 1,宽度 = NA,高度 = NA,单位 = c(“in”,“cm”,“mm”),dpi = 300 , limitsize = TRUE, ... )
So your command should have been所以你的命令应该是
ggsave(plot=g, filename="gtest.png", width=4, height=4)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.