本文へスキップ
からだにいいもの

Rのトピックスを中心に『まだ、まだ、知らない、役に立つ情報?』を発信します。

Rで解析:ggplot2のプロットに有意差バーを追加!「ggsignifr」パッケージ

「ggplot2」パッケージのプロットに有意差バーを追加するパッケージの紹介です。出力例を確認してください。

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

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

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

#パッケージのインストール
install.packages("ggsignif")
スポンサーリンク

実行コマンド

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

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

#ggplot2を利用するためにtidyverseパッケージを読み込み
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
  install.packages("tidyverse");require("tidyverse")
}

###データ例の作成#####
TestData <- data.frame("Group" = c(rep("Group1", 50), sample(paste0("Group", 2:3), 50, replace = TRUE)),
                       "Data1" = c(sample(c(1:8), 10, replace = TRUE),
                                   sample(2:8, 40, replace = TRUE),
                                   sample(4:7, 50, replace = TRUE)))
########

###プロット例の作成#####
#箱ひげ
BoxPlot <- ggplot(TestData, aes(x = Group, y = Data1)) +
  geom_boxplot(fill = "lightblue")
#棒グラフ
HistPlot <- ggplot(TestData, aes(x = Group, y = Data1, group = Group)) +
  geom_histogram(aes(fill = Group), stat = "identity") 
########

#プロットに有意差表示:geom_signifコマンド
#変数を指定:comparisonsオプション;listで指定
#2変数の検定手法を設定:testオプション;t.test,wilcox.testなどが指定可能
#欠損値を除去して計算:na.rmオプション
#検定結果をアスタリスクで表示:map_signif_levelオプション;"***"=0.001,"**"=0.01,"*"=0.05
###プロット#####
BoxPlot +
  geom_signif(comparisons = list(c("Group1", "Group2")),
              test = "t.test", na.rm = FALSE, map_signif_level = TRUE, col = "red")

#検定を利用せずに手動で有意差表示を追加
#statオプション:"identity"
###表示位置はdata.frameで指定;x,xend,y,annotation等で指定####
###表示位置データの準備#####
PlotPoint <- data.frame(x = c(0.8, 1.8, 2.8, 0.8),
                        y = c(8.2, 7.5, 2.5, 8.7),
                        xend = c(1.2, 2.2, 3.2, 3.2),
                        yend = c(8.2, 7.5, 2.5, 8.7),
                        annotation = c("***", "0.05", "**", "NS"))
###プロット#####
BoxPlot +
  geom_signif(data = PlotPoint, 
              aes(x = x, xend = xend,
                  y = y, yend = yend,
                  annotation = annotation),
              stat = "identity", col = "red")

出力例

・プロットに有意差表示:geom_signifコマンド

・検定を利用せずに手動で有意差表示を追加

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

このコードの続きをAIに聞く

スポンサーリンク

コメント(1)

Prices and shipping availability may change. Please refer to the product page at time of purchase.
Content displayed on this site is provided by Amazon and may be updated or removed.
Amazon Associate, karada-good earns income through qualifying sales.