2014-02-24 35 views
2

我想从一个情节exctact传说:保存传奇旁边传奇

a<-rnorm(100) 
b<-runif(100) 
ba<-cbind(a,b) 
colnames(ba)<-c("a","b") 
ba<-melt(ba,id.vars=1:1) 
colnames(ba)<-c("c","variable","value") 
plot1<-ggplot(q,aes(x=c,y=value,colour=variable,size=variable))+geom_point()+theme(legend.position="right") 

现在我提取从GROB传说:

g_legend<-function(a.gplot){ 
tmp <- ggplot_gtable(ggplot_build(a.gplot)) 
leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box") 
legend <- tmp$grobs[[leg]] 
return(legend)} 


legend<-g_legend(plot1) 

我可以 PDF( “plot.pdf”) grid.draw(图例) dev.off()

所得图像将包含图例瓦特:通过使用grid.draw保存此说明ith很多空白。有没有一种方法只能绘制图例,但不能在旁边有太多空间?

+1

我认为使用'pdf'或'png'确实有效。 'ggsave'可能不起作用,因为'grid.draw'的输出不是ggplot对象。 –

+0

对,但是我应该在pdf后面加上什么? PDF(grid.draw(传奇))?或者如何? – user1723765

+0

'pdf(“filename.pdf”)',那么你所有的绘图命令,然后'dev.off()' – josliber

回答

2
gg <- gtable::gtable_filter(x=ggplotGrob(plot1), 
       pattern="guide", trim=TRUE)[["grobs"]][[1]][["grobs"]][[1]] 

pdf("legend.pdf", 
    width=convertWidth(sum(gg$width), "in", valueOnly=TRUE), 
    height=convertHeight(sum(gg$heights), "in", valueOnly=TRUE)) 
grid.draw(gg) 
dev.off() 
+0

现在好多了,但仍然有很多空间。 – user1723765

+0

'?theme'您需要自己做一些Google搜索和腿部练习。就像我建议'pdf'一样。如果你不知道如何使用它,至少应该试试'?pdf'。 –

+0

图例边距有问题,其中一些不可定制(请参阅github问题跟踪器)。 – baptiste