1. ホーム
  2. r

[解決済み] ggplotsの'unbalanced'グリッドを得るにはどうしたらよいですか?

2023-02-13 12:13:29

質問

grid.arrange を複数並べることができる ggplot のようなものを使って、グリッドで多面的な図を実現する。

library(ggplot2)
library(grid)
library(gridExtra)

ggplot2のプロットを生成します。

plot5 <- grid.arrange(plot4, plot1, heights=c(3/4, 1/4), ncol=1, nrow=2)

1列目に1つのプロット、2列目に3つのプロットを持つ「アンバランスな」2列レイアウトを得るにはどうしたらよいでしょうか。 私は、'grid-of-grids' アプローチで grid.arrange を使用して、1 つのグリッドをプロットしようとしました (例えば plot5 , 上記)に対して別のプロットを行ったが、得られた。

arrangeGrob(..., as.table = as.table, clip = clip, main = main, ...でエラー。 input must be grobs!

更新しました。

アドバイスありがとうございます。私は調べてみます。 viewportsgrid . 一方、@DWin のおかげで layOut のコンパイル図は、'wq' パッケージの関数が非常にうまく機能しました。 Sweave のドキュメントにあります。

アップデート2です。

この arrangeGrob コマンド (@baptiste によって提案された) もうまく動作し、非常に直感的なようです - 少なくとも、2 つの列の幅を変更するのは簡単でした。また、これは `wq' パッケージを必要としないという利点もあります。

例:以下は私のSweaveファイルからのコードです。

<<label=fig5plot, echo=F, results=hide>>=
plot5<-grid.arrange(plot4, arrangeGrob(plot1, plot2, plot3, ncol=1), 
                    ncol=2, widths=c(1,1.2))
@
\begin{figure}[]
    \begin{center}
<<label=fig5,fig=TRUE,echo=T, width=10,height=12>>=
<<fig5plot>>
@
\end{center}
\caption{Combined plots using the `arrangeGrob' command.}
\label{fig:five}
\end{figure}

とすると、次のような出力が得られます。

ところで、なぜ '>NA' が表示されるのか、どなたか教えてください。

どのように解決するのですか?

grid.arrange はデバイスに直接描画します。他のグリッドオブジェクトと組み合わせたい場合は arrangeGrob のように

 p = rectGrob()
 grid.arrange(p, arrangeGrob(p,p,p, heights=c(3/4, 1/4, 1/4), ncol=1),
              ncol=2)

編集 (2015/07):v>2.0.0にて、以下のように layout_matrix という引数が追加されました。

 grid.arrange(p,p,p,p, layout_matrix = cbind(c(1,1,1), c(2,3,4)))