[解決済み] grid.arrange()のプロットをファイルに保存する
2022-04-25 23:36:55
質問
を使用して複数のプロットを作成しようとしています。
ggplot2
を使用し、それらを並べます。
grid.arrange()
.
私が抱えている問題と全く同じことを説明している人を見つけることができたので、その問題の説明を以下から引用します。
リンク
:
を使用する場合
ggsave()
の後に
grid.arrange()
は、すなわち
grid.arrange(sgcir1,sgcir2,sgcir3,ncol=2,nrow=2) ggsave("sgcirNIR.jpg")
グリッドプロットではなく、最後の個々のggplotを保存しています。何か
で表示されるプロットを実際に保存する方法です。
grid.arrange()
を使って
ggsave()
のようなものでしょうか?
古い方法を使用する以外には
jpeg("sgcirNIR.jpg") grid.arrange(sgcir1,sgcir2,sgcir3,ncol=2,nrow=2) dev.off()
同じリンク先で、以下のような解答が得られます。
require(grid)
require(gridExtra)
p <- arrangeGrob(qplot(1,1), textGrob("test"))
grid.draw(p) # interactive device
ggsave("saving.pdf", p) # need to specify what to save explicitly
しかし、このような場合、どのようにして
ggsave()
の出力を保存するために
grid.arrange()
の呼び出しは、以下のコードから引用されています。
リンク
:
library(ggplot2)
library(gridExtra)
dsamp <- diamonds[sample(nrow(diamonds), 1000), ]
p1 <- qplot(carat, price, data=dsamp, colour=clarity)
p2 <- qplot(carat, price, data=dsamp, colour=clarity, geom="path")
g_legend<-function(a.gplot){
tmp <- ggplot_gtable(ggplot_build(a.gplot))
leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box")
legend <- tmp$grobs[[leg]]
return(legend)}
legend <- g_legend(p1)
lwidth <- sum(legend$width)
## using grid.arrange for convenience
## could also manually push viewports
grid.arrange(arrangeGrob(p1 + theme(legend.position="none"),
p2 + theme(legend.position="none"),
main ="this is a title",
left = "This is my global Y-axis title"), legend,
widths=unit.c(unit(1, "npc") - lwidth, lwidth), nrow=1)
# What code to put here to save output of grid.arrange()?
解決方法は?
grid.arrange
は、デバイスに直接描画します。
arrangeGrob
一方、何も描画せず、grobを返す。
g
に渡すことができます。
ggsave(file="whatever.pdf", g)
.
指定されなければデフォルトで最後のプロットが保存されるggplotオブジェクトと異なる動作をする理由は、ggplot2が目に見えない形で最新のプロットを追跡しているからです。
grid.arrange
は、このパッケージのプライベートなカウンターをいじくるべきです。
関連
-
R言語です。「接続を開くことができません」解決策
-
Rでエラー:単項演算子への引数が無効
-
SocketTimeoutExceptionです。読み込みがタイムアウトしました
-
Rの警告 "条件の長さが1より大きいので、最初の要素しか使えない "に対する解決策
-
[解決済み] "エラーです。Rでテーマの書式を保存する際に「Don't know how to add RHS to the theme object」(テーマオブジェクトにRHSを追加する方法がわかりません)と表示されます。
-
[解決済み] ggplot2 の軸ラベルを回転させ、間隔を空ける
-
[解決済み] Rで2つのグラフを同じプロットで表示する
-
[解決済み] なぜ `[`] は `subset` よりも優れているのですか?
-
[解決済み】ggplot2でプロットタイトルを中央に配置する
-
[解決済み】ggplot2で軸のタイトルやラベルの大きさを変更する。
最新
-
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 LanguageError in hist.default() : 'x' は数値でなければなりません.
-
R plot.new() のエラー : 図形の余白が大きすぎる
-
DEG解析で'row.names'に重複した名前を付けられない場合の解決法
-
R言語における共通関数
-
[解決済み] "エラーです。Rでテーマの書式を保存する際に「Don't know how to add RHS to the theme object」(テーマオブジェクトにRHSを追加する方法がわかりません)と表示されます。
-
[解決済み] Rの代入演算子"="と"<-"の違いは何ですか?
-
[解決済み] 情報を損なわずに因数を整数値に変換するには?
-
[解決済み] ggplot2 を使って 2 つの変数を同じグラフに線でプロットする
-
[解決済み】ggplot2によるサイド・バイ・サイド・プロット
-
[解決済み] 2つの単語の最初の文字を大文字にします。