Rで解析:geom_pointへのテキストやラベルの付与に便利な「ggrepel」パッケージ

Rの解析に役に立つ記事

ggplot2パッケージで散布図の作成に便利なgeom_pointコマンドがありますが、プロットシンボルにテキストやラベルの情報を付与しようとすると位置の調整が非常に面倒でした。そんな面倒を解決できるパッケージの紹介です。

geom_pointにテキストとラベルを付与する「ggrepel」パッケージの「geom_text_repel, geom_label_repel」実行例をを紹介します。

参考:ggplot2パッケージの基本的な使い方
https://www.karada-good.net/analyticsr/r-78/

また、参考までに「ggiraph」パッケージにはインタラクティブで表示する 「geom_text_repel_interactive」 コマンド と 「geom_label_repel_interactive」コマンドが収録されています。 「geom_label_repel_interactive」コマンド の使用例を「実行コマンド」最下部に紹介します。

パッケージバージョンは0.9.1。実行コマンドはwindows 11のR version 4.1.2で動作を確認しています。

スポンサーリンク
スポンサーリンク

パッケージのインストール

下記、コマンドを実行してください。

#パッケージのインストール
install.packages("ggrepel")

実行コマンド

詳細はコメント、パッケージのヘルプを確認してください。

#パッケージの読み込み
library("ggrepel")

###データ例の作成#####
n <- 30
TestData <- data.frame(Group = sample(paste0("Group", 1:5), n, replace = TRUE),
                       Data1 = rnorm(n), Data2 = rnorm(n) + rnorm(n) + rnorm(n))

###ggplot2で基本となる散布図を作成#####
PointPlot <- ggplot(TestData, aes(x = Data1, y = Data2,
                                  label = Group, color = Group,
                                  fill = Group)) + geom_point()
#プロット
PointPlot

###プロットにテキスト表示#####
#ggplot2パッケージ:geom_textコマンド
#PointPlot + geom_text()

#ggrepelパッケージ:geom_text_repelコマンド
#初期体裁でプロット
PointPlot + geom_text_repel()

#体裁を変更してプロット
#ggplot2のグラフ要素が使用できます
#ggplo2パッケージの紹介はこちらから #https://www.karada-good.net/analyticsr/r-78/
PointPlot + geom_text_repel(
  #文字の体裁
  fontface = "bold",
  #線の色
  segment.color = "#4b61ba",
  #線の太さ
  segment.size = 1.5,
  #ラベルまでの距離
  min.segment.length = 0.1,
  #欠損値の除外
  na.rm = TRUE,
  #凡例を非表示
  show.legend = FALSE)
########
  
###プロットにラベル表示#####
#ggplot2パッケージ:geom_labelコマンド
#テキストの色を白に変更しています
#PointPlot + geom_label(color = "white")
  
#ggrepelパッケージ:geom_label_repelコマンド
#初期体裁でプロット
PointPlot + geom_label_repel(color = "white")

#体裁を変更してプロット
#ggplot2のグラフ要素が使用できます
#ggplo2パッケージの紹介はこちらから
#https://www.karada-good.net/analyticsr/r-78/
PointPlot + geom_label_repel(
  #文字の体裁
  fontface = "bold",
  #線の色
  segment.color = "#4b61ba",
  #線の太さ
  segment.size = 1,
  #ラベルまでの距離
  min.segment.length = 0.1,
  #欠損値の除外
  na.rm = TRUE,
  #凡例を非表示
  show.legend = TRUE) +
  #ラベル背景色の調整
  scale_fill_manual(values = c("#a87963", "#8a5136",
                               "#6e5f72", "#28231e", "#d9bb9c"))
  
########
  
###おまけ:ggiraphパッケージを利用したグラフのインタラクティブ化#####
#パッケージの紹介はこちらから
#https://www.karada-good.net/analyticsr/r-376/
#パッケージの読み込み
#ggiraphパッケージがなければインストール
if(!require("ggiraph", quietly = TRUE)){
  install.packages("ggiraph");require("ggiraph")
}

###インタラクティブ用のデータを追加#####
#ツールチップデータの作成:tooltip
TestData$tooltip <- paste0( "グループ名 <br/>", TestData[, 1])
#シンボルクリックで表示する内容を作成:clickjs
TestData$click <- sprintf("alert(\"%s%s%s%s\")",
                          "X:", round(TestData[, 2], 2),
                          ", Y:", round(TestData[, 3], 2))

#geom_label_repel_interactiveコマンド
PointPlot <- ggplot(TestData, aes(x = Data1, y = Data2,
                                  tooltip = tooltip, onclick = click,
                                  label = Group, color = Group, fill = Group)) +
  geom_point() +
  geom_label_repel_interactive(
    #文字の体裁
    fontface = "bold",
    #線の色
    segment.color = "#4b61ba",
    #線の太さ
    segment.size = 1,
    #ラベルまでの距離
    min.segment.length = 0.1,
    #欠損値の除外
    na.rm = TRUE,
    #凡例を非表示
    show.legend = TRUE) +
  #ラベル背景色の調整
  scale_fill_manual(values = c("#a87963", "#8a5136", "#6e5f72",
                               "#28231e", "#d9bb9c"))
#インタラクティブにプロット
girafe(ggobj = PointPlot)

出力例

・geom_text_repelコマンド:初期体裁

geom_text_repel

・geom_text_repelコマンド:体裁を変更

geom_text_repelEx

・geom_label_repelコマンド:初期体裁

geom_label_repel

・geom_label_repelコマンド:体裁を変更

geom_label_repelEx

・ggiraphパッケージを利用したグラフのインタラクティブ化


少しでも、あなたの解析が楽になりますように!!

タイトルとURLをコピーしました