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


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

geom_pointにテキストとラベルを付与する「ggrepel」パッケージの「geom_text_repel, geom_label_repel」実行例を「ggplot2」パッケージ「geom_text, geom_label」の初期体裁と合わせて紹介します。

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

また、参考までに「ggiraph」パッケージを利用してインタラクティブにする例を実行コマンド下部に紹介します。

参考:ggplot2のgeom_pointをインタラクティブに!「ggiraph」パッケージ
https://www.karada-good.net/analyticsr/r-376/

パッケージバージョンは0.3。実行コマンドはR version 3.2.2で確認しています。


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

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

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

実行コマンド

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

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

###データ例の作成#####
n <- 50
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,
                            #欠損値の除外
                            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.5,
                             #欠損値の除外
                             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/
#パッケージの読み込み
library("ggiraph")

###インタラクティブ用のデータを追加#####
#ツールチップデータの作成:tooltip
TestData$tooltip <- paste0( "グループ名 <br/>", TestData[, 1])
#シンボルクリックで表示する内容を作成:clickjs
TestData$click <- paste0("function() {alert('Xの値は", round(TestData[, 2], 2),
                         " Yの値は", round(TestData[, 3], 2),"です。')}" )
#geom_point_interactiveコマンド
PointPlot <- ggplot(TestData, aes(x = Data1, y = Data2, tooltip = tooltip, onclick = click,
                                  label = Group, color = Group, fill = Group)) +
             geom_point_interactive()
#geom_label_repelコマンド
PointPlot <- PointPlot + geom_label_repel(#文字の体裁
                                          fontface = "bold",
                                          #線の色
                                          segment.color = "#4b61ba",
                                          #線の太さ
                                          segment.size = 1.5,
                                          #欠損値の除外
                                          na.rm = TRUE,
                                          #凡例を非表示
                                          show.legend = TRUE) +
                         #ラベル背景色の調整
                         scale_fill_manual(values = c("#a87963", "#8a5136",
                                                      "#6e5f72", "#28231e", "#d9bb9c"))
#インタラクティブにプロット
ggiraph(fun = print, x = PointPlot)

出力例

・geom_textコマンド:初期体裁
geom_text

・geom_text_repelコマンド:初期体裁
geom_text_repel

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

・geom_labelコマンド:初期体裁
geom_label

・geom_label_repelコマンド:初期体裁
geom_label_repel

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

・ggiraphパッケージを利用したグラフのインタラクティブ化
なお、画像での表示です。コマンドを実行して試してください。
ggiraph


少しでも、あなたのウェブや実験の解析が楽になりますように!!

スポンサードリンク

おすすめコンテンツ


スポンサードリンク