4 回答

TA貢獻1871條經驗 獲得超8個贊
{Ben Bolker指出了一個更好的選擇- grid.arrange從gridExtra包裝中。ggplot2但是,如果您是用戶,R Cookbook網站仍然值得點擊。}
R Cookbook的此頁上有一個很好的multiplot功能代碼(絕對值得一游),它對于這種事情很有用。直接從該站點報價:
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 ))
}
}
在3×2布局中嘗試6個地塊(JD Long的四個地塊,以及兩個獎勵地塊?。?/p>
set.seed(2)
q1 <- ggplot(data.frame(x=rnorm(50)), aes(x)) + geom_density()
q2 <- ggplot(data.frame(x=rnorm(50)), aes(x)) + geom_density()
q3 <- ggplot(data.frame(x=rnorm(50)), aes(x)) + geom_density()
q4 <- ggplot(data.frame(x=rnorm(50)), aes(x)) + geom_density()
q5 <- ggplot(data.frame(x=rnorm(50)), aes(x)) + geom_density()
q6 <- ggplot(data.frame(x=rnorm(50)), aes(x)) + geom_density()
multiplot(q1, q2, q3, q4, q5, q6, cols=2)
給出這個數字:
如果該功能不能完全滿足您的需求,至少可以為您提供一個不錯的起點!

TA貢獻1821條經驗 獲得超5個贊
感謝Andrie的評論和Harlan對我之前的問題(?。┑幕卮穑姨岢隽舜私鉀Q方案,該解決方案實現了我所追求的目標:
set.seed(2)
q1 <- ggplot(data.frame(x=rnorm(50)), aes(x)) + geom_density()
q2 <- ggplot(data.frame(x=rnorm(50)), aes(x)) + geom_density()
q3 <- ggplot(data.frame(x=rnorm(50)), aes(x)) + geom_density()
q4 <- ggplot(data.frame(x=rnorm(50)), aes(x)) + geom_density()
grid.newpage()
pushViewport(viewport(layout=grid.layout(2,2)))
vplayout <- function(x,y) viewport(layout.pos.row=x,layout.pos.col=y)
print(q1,vp=vplayout(1,1))
print(q2,vp=vplayout(1,2))
print(q3,vp=vplayout(2,1))
print(q4,vp=vplayout(2,2))
- 4 回答
- 0 關注
- 855 瀏覽
添加回答
舉報