亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在ggplot2中創建任意窗格

在ggplot2中創建任意窗格

躍然一笑 2019-10-29 14:55:36
在基本圖形中,我可以通過執行以下操作來創建4面板圖形窗格:par(mfrow=c(2,2))for (i in 1:4){  plot(density(rnorm(100)))}我想用ggplot2做同樣的事情,但是我不知道該怎么做。我無法使用方面,因為與這個瑣碎的示例不同,我的真實數據的結構完全不同,我希望兩個圖成為點圖,兩個圖成為直方圖。如何在ggplot2中創建面板或窗格?
查看完整描述

4 回答

?
ITMISS

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)

給出這個數字:

如果該功能不能完全滿足您的需求,至少可以為您提供一個不錯的起點!


查看完整回答
反對 回復 2019-10-29
?
收到一只叮咚

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))


查看完整回答
反對 回復 2019-10-29
  • 4 回答
  • 0 關注
  • 855 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號