[解決済み] ggplot2 - プロットの外側に注釈を付ける
2023-07-08 20:25:31
質問
サンプルサイズの値をプロット上の点に関連付けたい。 私は使用することができます
geom_text
を使って点の近くに数字を配置することができますが、これは乱雑です。 プロットの外側のエッジに沿ってそれらを並べる方がずっときれいでしょう。
例えば、私の場合
df=data.frame(y=c("cat1","cat2","cat3"),x=c(12,10,14),n=c(5,15,20))
ggplot(df,aes(x=x,y=y,label=n))+geom_point()+geom_text(size=8,hjust=-0.5)
このようなプロットを生成します。
私はもっとこのようなものを希望します。
2つ目のプロットを作成することができることは知っています。
grid.arrange
(ラ
この記事
のようなもの)ですが、textGrobの間隔をy軸に沿うように決めるのは面倒だと思います。もっと簡単な方法はないでしょうか? ありがとうございます。
どのように解決するのですか?
2つ目のプロットを描く必要はありません。この場合
annotation_custom
を使って、プロット領域の内側または外側の任意の場所にグロブを配置することができます。グロブの位置決めはデータ座標で行います。例えば、"5", "10", "15" が "cat1", "cat2", "cat3" と一致するとすると、テキストグローブの垂直位置は、3点のテキストグローブのy座標が3点のデータポイントのy座標で与えられるということになり、非常に便利なことになります。デフォルトでは
ggplot2
はグラフをプロットエリアにクリッピングしますが、クリッピングはオーバーライドすることができます。関連するマージンは、grobのためのスペースを作るために広げられる必要があります。以下は (ggplot2 0.9.2 を使って) 2番目のプロットと似たようなプロットを生成します。
library (ggplot2)
library(grid)
df=data.frame(y=c("cat1","cat2","cat3"),x=c(12,10,14),n=c(5,15,20))
p <- ggplot(df, aes(x,y)) + geom_point() + # Base plot
theme(plot.margin = unit(c(1,3,1,1), "lines")) # Make room for the grob
for (i in 1:length(df$n)) {
p <- p + annotation_custom(
grob = textGrob(label = df$n[i], hjust = 0, gp = gpar(cex = 1.5)),
ymin = df$y[i], # Vertical position of the textGrob
ymax = df$y[i],
xmin = 14.3, # Note: The grobs are positioned outside the plot area
xmax = 14.3)
}
# Code to override clipping
gt <- ggplot_gtable(ggplot_build(p))
gt$layout$clip[gt$layout$name == "panel"] <- "off"
grid.draw(gt)
<イグ
関連
-
二項演算子への非数値引数を報告するR言語エラー
-
Rでファイルを読み込む際に、そのようなファイルまたはディレクトリが見つかりません。
-
[解決済み] 文字列ベクトルを代入して、列名を持つ空のデータフレームを作成する?重複
-
[解決済み] ggplot2 の軸ラベルを回転させ、間隔を空ける
-
[解決済み] Rで2つのグラフを同じプロットで表示する
-
[解決済み] Rでロードされているパッケージのバージョンを調べるには?
-
[解決済み] ggplot2 Rプロットで軸の制限を設定するには?
-
[解決済み】ggplot2でプロットタイトルを中央に配置する
-
[解決済み] テーブルをデータフレームに変換する方法
-
[解決済み] セッションが作成されません。このバージョンのChromeDriverはChromeバージョンにしか対応していません ChromeDriver ChromeでSeleniumを使用した場合の74エラー
最新
-
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 描画エラー plot.new() : 図形の余白が大きすぎる
-
8.2 カマグラ(No.31〜No.40)
-
R言語エラー:図の余白が大きすぎる 解決方法
-
[R] is.data.frame(x) のエラー : (リスト) オブジェクトを 'double' 型に強制できない。
-
[解決済み] Rで文字列から文字を削除する
-
[解決済み] Rの再現性のある優れた例題の作り方
-
[解決済み] コマンドラインからRスクリプトを実行する
-
[解決済み] ベクトル中のある要素のインデックスを求めるR関数はありますか?
-
[解決済み】data.frameのグループごとの平均値【重複】について
-
[解決済み] 行末のラベルをプロットする