我有一個視圖,其中兩個圖形以左至右的方式繪製。我試圖讓一個標題顯示在視口中居中的兩個圖上。這可能嗎?對不起,由於我的工作環境,我沒有照片,因爲我的工作環境,我無法發佈代碼。使用多個圖形在R視口中居中標題ggplot2
9
A
回答
14
我想你可能會感興趣的gridExtra包,它提供了grid.arrange()
功能滿足你想知道的一切。
隨着@凱文的例子中,該命令將
grid.arrange(plots[[1]], plots[[2]], ncol=2,
main="test main", sub="subtitle test")
3
我一直在使用this post to the ggplot2 mailing list中的一個幾乎未修改的代碼版本來將主標題和副標題放在圖的矩陣上方和下方。感謝BaptisteAuguié。
arrange <- function(..., nrow=NULL, ncol=NULL, as.table=FALSE,
main=NULL, sub=NULL, plot=TRUE) {
dots <- list(...)
n <- length(dots)
if(is.null(nrow) & is.null(ncol)) { nrow = floor(n/2) ; ncol = ceiling(n/nrow)}
if(is.null(nrow)) { nrow = ceiling(n/ncol)}
if(is.null(ncol)) { ncol = ceiling(n/nrow)}
fg <- frameGrob(layout=grid.layout(nrow,ncol))
ii.p <- 1
for(ii.row in seq(1, nrow)){
ii.table.row <- ii.row
if(as.table) {ii.table.row <- nrow - ii.table.row + 1}
for(ii.col in seq(1, ncol)){
ii.table <- ii.p
if(ii.p > n) break
fg <- placeGrob(fg, ggplotGrob(dots[[ii.table]]),
row=ii.table.row, col=ii.col)
ii.p <- ii.p + 1
}
}
if(!is.null(main) | !is.null(sub)){
g <- frameGrob() # large frame to place title(s) and content
g <- packGrob(g, fg)
if (!is.null(main))
g <- packGrob(g, textGrob(main), side="top")
if (!is.null(sub))
g <- packGrob(g, textGrob(sub), side="bottom")
} else {
g <- fg
}
if(plot) grid.draw(g)
invisible(g)
}
library(ggplot2)
plots <- llply(1:2, function(.x) qplot(1:10,rnorm(10), main=paste("plot",.x)))
arrange(plots[[1]],plots[[2]], nrow=1, ncol = 2, as.table=TRUE, main="test main",
sub="subtitle test")
產地:
+0
謝謝凱文,我會用chl的建議。任何人在未來做出改變都會變得更容易和更明顯。 – pcLogos 2011-05-19 15:01:05
1
另一種可能性,它是通過創建一個空白情節的方式樣的欺騙......
p1 <- ggplot(diamonds, aes(price,depth)) + geom_point()
p2 <- ggplot(diamonds, aes(price,carat)) + geom_point()
p3 <- ggplot(diamonds, aes(x=1,y=1,label="Title")) + geom_text(size=20) + opts(panel.background=theme_blank(), panel.grid.minor=theme_blank(), panel.grid.major=theme_blank(), axis.text.x=theme_blank(), axis.text.y=theme_blank(), axis.ticks=theme_blank(), axis.title.x=theme_blank(), axis.title.y=theme_blank())
vplayout <- function(x, y) viewport(layout.pos.row=x, layout.pos.col=y)
grid.newpage()
pushViewport(viewport(layout=grid.layout(4,4)))
print(p1,vp=vplayout(2:4,1:2))
print(p2,vp=vplayout(2:4,3:4))
print(p3,vp=vplayout(1,1:4))
+0
謝謝我想到這一個,但認爲有可能沒有作弊的方式來做到這一點:)我用chl發佈的代碼去。 – pcLogos 2011-05-19 15:02:29
相關問題
- 1. 用ggplot2在R中居中值
- 2. [R GGPLOT2中心對齊多行標題
- 3. R - 使用空標籤將ggplot2圖形中的NA標籤轉換爲圖形
- 4. 在條形圖中居中條形標籤r
- 5. 將多個圖形(ggplot2和其他類型)放在R中的一個圖中
- 6. R:在ggplot2中使用條形圖中的日期
- 7. 在(r)gedit中顯示多個R圖形窗口
- 8. 居中一個JavaScript圖形窗口
- 9. R/ggplot2中有多個變量的圖形
- 10. 從列表中使用ggplot2-R的多個直方圖圖
- 11. R - 使用ggplot2在函數中重新排列條形圖
- 12. 在R中使用ggplot2創建繪圖
- 13. R ggplot2軸標題問題
- 14. 在R中使用ggplot2的多行多個錯誤欄
- 15. 如何在ggplot2圖例中使用下標[R]
- 16. 使用R繪製多個.csv文件中的多個圖形
- 17. 在R或ggplot2的多繪圖輸出中添加徽標
- 18. 使用theme_bw在ggplot2中繪製標題
- 19. R ggplot2:使用嵌套循環在單個圖中覆蓋多個geom_ribbon對象
- 20. R:格子圖形標題
- 21. 使用matlab在單個窗口中繪製多個圖形
- 22. 使用ggplot2在R中繪製兩個或更多ecdfs
- 23. R:使用多個GGPLOT2情節d *層
- 24. 在ggplot2中移動圖例標題
- 25. 如何在R中使用twoord.plot()繪製多個圖形(faceting)?
- 26. 在R條形圖中添加多個分類標籤
- 27. 在r中使用ggplot2繪製多個函數和數據點的問題
- 28. r ggplot2:在條形圖中對圖例進行分組
- 29. 包含R標記的多個圖形
- 30. 使用視口疊加兩個圖形
你可以用一些組成數據發佈代碼。或者一個類似的代碼,顯示你有什麼。 – 2011-05-18 18:22:35