Tôi đang cố gắng vẽ nhiều ô bằng cách sử dụng ggplot2
, sắp xếp chúng bằng cách sử dụng grid.arrange()
. Vì tôi đã tìm được ai đó mô tả chính xác vấn đề mà tôi gặp phải, tôi đã trích dẫn từ mô tả vấn đề từ liên kết :
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ó cách nào thực sự lưu cốt truyện như được hiển thị bằng grid.arrange()
cách sử dụng
ggsave()
hoặc một cái gì đó tương tự không? Khác với cách sử dụng theo cách cũ
jpeg("sgcirNIR.jpg") grid.arrange(sgcir1,sgcir2,sgcir3,ncol=2,nrow=2) dev.off()
Liên kết tương tự đư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()
để lưu đầu ra của grid.arrange()
cuộc gọi trong đoạn mã sau, được lấy từ liên kết :
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()?
print(ggplot())
sao?
ggplot
sử dụng ggsave()
, độ phân giải của hình ảnh cao hơn nhiều. Có cách nào để lưu kết quả đầu ra grid.arrange()
với độ phân giải cao, như sẽ là nếu nó là một âm mưu duy nhất được lưu với ggsave()
? Nếu tôi cung cấp ví dụ các tùy chọn png(...,height=1600, width=2500)
thì hình ảnh trông rất mờ.
png(); grid.arrange(); ggplot(); ggplot(); dev.off()