2017-04-11 34 views
0

我有這樣的代碼:面值(mfrow)中的R爲ggplot

plotfn= function(u) { 
    flt = filter(d, utensil ==u) 
    ggplot(flt,aes(x=p)) + geom_histogram(binwidth = 0.5, position= position_dodge(0.5), color="black",fill="cadetblue4")+ ggtitle("Histogram of P")+labs(x="P", y="Number of Observations") 
} 
lapply(unique(d$utensil),plotfn) 

我試圖做一個par(mfrow= c(3,3))讓所有9個地塊中1個屏幕,但它不工作。我必須使用ggplot。

+0

有用的:http://www.cookbook-r.com/Graphs/(見「Facets」一章) –

+1

此外,這個問題可能會有所幫助:http://stackoverflow.com/questions/5226807/multiplegraphics -in-one-canvas-using-ggplot2 – Stedy

+0

爲什麼不使用'facet_grid'? Ggplot系統旨在避免這種混亂。對於兩種不同類型的情節,你可能會想'grid.arrange',但不是所有同類型的9。 –

回答

1

看看在gridExtra包,裏面有ggplot2很好地集成,並允許您將多個地塊放到一個頁面:https://cran.r-project.org/web/packages/gridExtra/vignettes/arrangeGrob.html

要使用它,你的ggplot調用的輸出存儲到一個變量,然後該變量傳遞給grid.arrange

myGrobs <- lapply(unique(d$utensil),plotfn) 
gridExtra::grid.arrange(grobs = myGrobs, nrow = 3) 
0

這應該讓你開始:

install.packages("gridExtra") 
library(gridExtra) 
grid.arrange(plot1, plot2, ..., ncol=3, nrow = 3)