Tôi đang cố gắng vẽ nhiều lô bằng cách sử dụng ggplot2
, sắp xếp chúng bằng cách sử dụng grid.arrange()
. Kể từ khi tôi cố gắng tìm một ai đó mô tả các vấn đề chính xác tôi có, tôi đã trích dẫn từ mô tả vấn đề từ link:Lưu grid.arrange() lô vào tập tin
Khi tôi sử dụng ggsave()
sau grid.arrange()
, tức là
grid.arrange(sgcir1,sgcir2,sgcir3,ncol=2,nrow=2) ggsave("sgcirNIR.jpg")
tôi không lưu cốt truyện lưới nhưng ggplot cá nhân cuối cùng. Có bất kỳ cách nào thực sự tiết kiệm cốt truyện như được hiển thị bằng cách grid.arrange()
sử dụng ggsave()
hoặc một cái gì đó tương tự? khác vì sử dụng cách cũ
jpeg("sgcirNIR.jpg") grid.arrange(sgcir1,sgcir2,sgcir3,ncol=2,nrow=2) dev.off()
Liên kết cùng đưa ra giải pháp dưới đây:
require(grid)
require(gridExtra)
p <- arrangeGrob(qplot(1,1), textGrob("test"))
grid.draw(p) # interactive device
ggsave("saving.pdf", p) # need to specify what to save explicitly
Tuy nhiên, tôi không thể tìm ra cách để sử dụng ggsave()
để tiết kiệm đầu ra của grid.arrange()
cuộc gọi trong đoạn mã sau, được lấy từ link:
library(ggplot2)
library(gridExtra)
dsamp <- diamonds[sample(nrow(diamonds), 1000), ]
p1 <- qplot(carat, price, data=dsamp, colour=clarity)
p2 <- qplot(carat, price, data=dsamp, colour=clarity, geom="path")
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(p1)
lwidth <- sum(legend$width)
## using grid.arrange for convenience
## could also manually push viewports
grid.arrange(arrangeGrob(p1 + theme(legend.position="none"),
p2 + theme(legend.position="none"),
main ="this is a title",
left = "This is my global Y-axis title"), legend,
widths=unit.c(unit(1, "npc") - lwidth, lwidth), nrow=1)
# What code to put here to save output of grid.arrange()?
Sử dụng 'png(); grid.arrange(); ggplot(); ggplot(); dev.off() ' – Andrie
Không phải 'in (ggplot())'? –
@DWin Có, có thể!:-) – Andrie