Tôi thực sự đánh giá cao sự trợ giúp của bạn về vấn đề sau. Tôi biết một số cách để lưu một âm mưu duy nhất vào một tệp. Câu hỏi của tôi là: Làm cách nào để lưu một số nhiều số vào một tệp?R - lưu nhiều nhân tố vào tệp
Để bắt đầu, tôi không phải là người dùng R có kinh nghiệm. Tôi sử dụng ggplot2 để tạo các ô của tôi, và một điều khác tôi có lẽ nên đề cập đến là tôi sử dụng giao diện RStudio. Sử dụng example từ sách Cookbook R, tôi có thể tạo nhiều ô trong một cửa sổ.
Tôi muốn lưu cái gọi là hệ số này thành một tệp (tốt nhất là jpeg), nhưng bằng cách nào đó không thực hiện được điều này.
tôi là tạo ra các multiplot như sau:
##define multiplot function
multiplot <- function(..., plotlist=NULL, cols) {
require(grid)
# Make a list from the ... arguments and plotlist
plots <- c(list(...), plotlist)
numPlots = length(plots)
# Make the panel
plotCols = cols # Number of columns of plots
plotRows = ceiling(numPlots/plotCols) # Number of rows needed, calculated from # of cols
# Set up the page
grid.newpage()
pushViewport(viewport(layout = grid.layout(plotRows, plotCols)))
vplayout <- function(x, y)
viewport(layout.pos.row = x, layout.pos.col = y)
# Make each plot, in the correct location
for (i in 1:numPlots) {
curRow = ceiling(i/plotCols)
curCol = (i-1) %% plotCols + 1
print(plots[[i]], vp = vplayout(curRow, curCol))
}
}
## define subplots (short example here, I specified some more aesthetics in my script)
plot1a <- qplot(variable1,variable2,data=Mydataframe1)
plot1b <- qplot(variable1,variable3,data=Mydataframe1)
plot1c <- qplot(variable1,variable2,data=Mydataframe2)
plot1d <- qplot(variable1,variable3,data=Mydataframe2)
## plot in one frame
Myplot <- multiplot(plot1a,plot1b,plot1c,plot1d, cols=2)
này cho kết quả mong muốn. Vấn đề phát sinh khi tôi cố gắng lưu vào một tập tin. Tôi có thể làm điều này bằng tay trong RStudio (sử dụng Export -> Save plot as image), nhưng tôi muốn chạy mọi thứ trong một kịch bản. Tôi quản lý để tiết kiệm chỉ subplot1d (đó là last_plot()), và không phải là hoàn thành multiplot.
Những gì tôi đã cố gắng cho đến nay:
Sử dụng ggsave
ggsave(filename = "D:/R/plots/Myplots.jpg")
Điều này dẫn đến chỉ 1d âm mưu phụ được cứu rỗi.
Sử dụng jpeg(), in() và dev.off()
jpeg(filename = "Myplot.jpg", pointsize =12, quality = 200, bg = "white", res = NA, restoreConsole = TRUE) print(Myplot) dev.off()
Điều này dẫn đến một hình ảnh hoàn toàn trắng (chỉ là nền tôi giả sử). in (Myplot) trả về NULL.
Không chắc mình đang làm gì sai ở đây. Sự thiếu hiểu biết của tôi R là lý do tôi đang cố gắng tìm một giải pháp. Bất cứ ai có thể giải thích những gì tôi đang làm sai và có lẽ đề nghị một cách để giải quyết vấn đề của tôi (s)?
Bạn cũng có thể sử dụng lưới ** gridExtra ::.sắp xếp (plot1a, plot1b, plot1c, plot1d, ncol = 2) ** – dickoa
Gói gridExtra không chứa grid.arrange, nó chứa sortGrob mà dường như cung cấp chức năng tương tự. Tôi cũng có vẻ nhớ một chức năng gọi là grid.arrange, có thể tác giả đã thay đổi chức năng tiêu đề trong gói. –
'grid.arrange' phải ở trong gridExtra. Rõ ràng, một trong những lợi ích của 'arrangGrob' so với' multiplot' là nó tương thích với 'ggsave' và bạn có thể lưu trữ grob tổng hợp để sử dụng sau này. – baptiste