[解決済み] grid.arrangeを使って任意の数のggplotを並べるにはどうしたらいいですか?
2023-03-10 23:51:39
質問
これは ggplot2 の google グループに投稿されたものです。
私の状況は、私は 関数で作業している この関数は任意の数のプロットを出力します (ユーザーによって提供された入力データによって異なります)。この関数は n 個のプロットのリストを返し、私はそれらのプロットを 2 x 2 の形に並べたいと考えています。という同時問題で苦労しています。
- どのようにして、任意の (n) 個のプロットを渡される柔軟性を持たせることができますか。
- 2 x 2 のレイアウトを指定するにはどうすればよいですか。
私の現在の戦略では
grid.arrange
から
gridExtra
パッケージから取得します。特に、これが重要なのですが、おそらく最適ではないでしょう。
は全く機能しません。
. 以下は私がコメントしたサンプルコードで、3つのプロットで実験しています。
library(ggplot2)
library(gridExtra)
x <- qplot(mpg, disp, data = mtcars)
y <- qplot(hp, wt, data = mtcars)
z <- qplot(qsec, wt, data = mtcars)
# A normal, plain-jane call to grid.arrange is fine for displaying all my plots
grid.arrange(x, y, z)
# But, for my purposes, I need a 2 x 2 layout. So the command below works acceptably.
grid.arrange(x, y, z, nrow = 2, ncol = 2)
# The problem is that the function I'm developing outputs a LIST of an arbitrary
# number plots, and I'd like to be able to plot every plot in the list on a 2 x 2
# laid-out page. I can at least plot a list of plots by constructing a do.call()
# expression, below. (Note: it totally even surprises me that this do.call expression
# DOES work. I'm astounded.)
plot.list <- list(x, y, z)
do.call(grid.arrange, plot.list)
# But now I need 2 x 2 pages. No problem, right? Since do.call() is taking a list of
# arguments, I'll just add my grid.layout arguments to the list. Since grid.arrange is
# supposed to pass layout arguments along to grid.layout anyway, this should work.
args.list <- c(plot.list, "nrow = 2", "ncol = 2")
# Except that the line below is going to fail, producing an "input must be grobs!"
# error
do.call(grid.arrange, args.list)
私はよくやるように、謙虚に隅に身を寄せ、私よりはるかに賢明なコミュニティからの賢明なフィードバックを待ち望んでいます。 特に、私がこれを必要以上に難しくしているのであればなおさらです。
どのように解決するのですか?
もう少しのところです。問題は
do.call
は、引数が名前付きの
list
オブジェクトにあることを期待します。リストに入れたのは文字列であり、リストの項目名ではありません。
これでうまくいくはずです。
args.list <- c(plot.list, 2,2)
names(args.list) <- c("x", "y", "z", "nrow", "ncol")
Ben と Joshua がコメントで指摘したように、私はリストを作成するときに名前を割り当てることができました。
args.list <- c(plot.list,list(nrow=2,ncol=2))
または
args.list <- list(x=x, y=y, z=x, nrow=2, ncol=2)
関連
-
R言語です。「接続を開くことができません」解決策
-
R: hclust(d, method = method)でのエラー : 外部関数呼び出しは NA/NaN/Inf(arg10) を持つことができません。
-
データボックス内の行/列の削除/追加を行うR言語
-
[解決済み] ネストされた plot_grid を同じサイズに拡大縮小するには?
-
[解決済み] データフレームを結合(マージ)する方法(内側、外側、左側、右側)
-
[解決済み] グループ化関数(tapply、by、aggregate)と*applyファミリ
-
[解決済み] xkcd風のグラフを作るには?
-
[解決済み] パッケージ 'xxx' は利用できません (for R version x.y.z) 」という警告にどのように対処したらよいですか?
-
[解決済み】R関数でオプション引数を指定する "正しい "方法
-
[解決済み] テーブルをデータフレームに変換する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
R言語です。「接続を開くことができません」解決策
-
R LanguageError in hist.default() : 'x' は数値でなければなりません.
-
Rでエラー:単項演算子への引数が無効
-
[R] is.data.frame(x) のエラー : (リスト) オブジェクトを 'double' 型に強制できない。
-
[解決済み] "エラーです。Rでテーマの書式を保存する際に「Don't know how to add RHS to the theme object」(テーマオブジェクトにRHSを追加する方法がわかりません)と表示されます。
-
[解決済み] Rで文字列から文字を削除する
-
[解決済み] Rの代入演算子"="と"<-"の違いは何ですか?
-
[解決済み] データフレーム内のランダムな行をサンプリングする
-
[解決済み] ggplot2 Rプロットで軸の制限を設定するには?
-
[解決済み】ifelse()でDateオブジェクトがnumericオブジェクトにならないようにする方法