Rで解析:コルセットプロットで新たな発見!「ggcorset」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

コルセットプロットは各時点のデータ分布や各データの変化の可視化に有効な手法です。コマンド例ではwide型、long型データに対応した作成コマンドと「ggplot2」パッケージのコマンドを利用した例を紹介します。

なお、本パッケージは「ggplot2」パッケージのコマンドで体裁などの調整が可能です。

パッケージバージョンは0.4.0。windows11のR version 4.2.2で確認しています。

スポンサーリンク

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

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

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

実行コマンド

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

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

###データ例の作成#####
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
  install.packages("tidyverse");require("tidyverse")
}
#MetBrewerパッケージがなければインストール
if(!require("MetBrewer", quietly = TRUE)){
  install.packages("MetBrewer");require("MetBrewer")
}
set.seed(1234)
n <- 100
#wide&#22411;&#12487;&#12540;&#12479;&#20316;&#25104;
TestData <- tibble(Group = sample(paste0("Group", 1:4), n,
                                  replace = TRUE),
                   Pre_Data = sample(c(1:50), n, replace = TRUE),
                   Post_Data = sample(c(1:50), n, replace = TRUE)) %>%
  mutate(ID = row_number(), .before = Pre_Data) %>%
  mutate(ChangeData = Post_Data - Pre_Data) %>%
  mutate(Check_Data = if_else(ChangeData < 0, "Decrease",
                              if_else(ChangeData > 0, "Increase", "No_Change"))) %>%
  mutate(Check_Data = factor(Check_Data, levels = c("Increase", "Decrease", "No_Change")))

#Long&#22411;&#12487;&#12540;&#12479;
Long_TestData <- TestData %>%
  pivot_longer(cols = c("Pre_Data", "Post_Data"), names_to = "Time")
########


#wide&#22411;&#12487;&#12540;&#12479;&#12363;&#12425;&#12467;&#12523;&#12475;&#12483;&#12488;&#12503;&#12525;&#12483;&#12488;&#12398;&#20316;&#25104;:gg_corset&#12467;&#12510;&#12531;&#12489;
#&#38283;&#22987;&#28857;&#12398;&#12487;&#12540;&#12479;:y_var1&#12458;&#12503;&#12471;&#12519;&#12531;
#&#32066;&#20102;&#28857;&#12398;&#12487;&#12540;&#12479;:y_var2&#12458;&#12503;&#12471;&#12519;&#12531;
#&#12487;&#12540;&#12479;&#22793;&#21270;&#37327;&#12434;&#31034;&#12377;&#22522;&#28310;&#12487;&#12540;&#12479;:c_var&#12458;&#12503;&#12471;&#12519;&#12531;
#c_var&#12458;&#12503;&#12471;&#12519;&#12531;&#12398;&#22522;&#28310;&#12391;&#20998;&#21106;&#12503;&#12525;&#12483;&#12488;:faceted&#12458;&#12503;&#12471;&#12519;&#12531;;TRUE/FALSE
#&#12518;&#12491;&#12540;&#12463;&#12394;&#21508;&#12487;&#12540;&#12479;&#12398;&#22522;&#28310;&#12487;&#12540;&#12479;:group&#12458;&#12503;&#12471;&#12519;&#12531;
#&#21508;&#12487;&#12540;&#12479;&#22793;&#21270;&#37327;&#12395;&#23550;&#12377;&#12427;SEM(&#27161;&#26412;&#24179;&#22343;&#12398;&#27161;&#28310;&#35492;&#24046;)&#12434;&#34920;&#31034;:eyelets&#12458;&#12503;&#12471;&#12519;&#12531;;TRUE/FALSE
#&#32218;&#12398;&#22826;&#12373;:line_size&#12458;&#12503;&#12471;&#12519;&#12531;
#&#24038;&#21491;&#12398;ViolinPlot&#12398;&#22615;&#33394;:vio_fill&#12458;&#12503;&#12471;&#12519;&#12531;
CorsetGG <- gg_corset(data = TestData, y_var1 = "Pre_Data",
                      y_var2 = "Post_Data", c_var = "Check_Data",
                      faceted = TRUE, group = "ID", eyelets = TRUE, 
                      line_size = 0.5, vio_fill = "#ad8a80") 
#&#30906;&#35469;
CorsetGG

#long&#22411;&#12487;&#12540;&#12479;&#12363;&#12425;&#12467;&#12523;&#12475;&#12483;&#12488;&#12503;&#12525;&#12483;&#12488;&#12398;&#20316;&#25104;:gg_corset_elongated&#12467;&#12510;&#12531;&#12489;
#X&#36600;&#12395;&#20351;&#29992;&#12377;&#12427;&#12487;&#12540;&#12479;:x_var&#12458;&#12503;&#12471;&#12519;&#12531;
#X&#36600;&#12487;&#12540;&#12479;&#12398;&#12521;&#12505;&#12523;&#20869;&#23481;:x_vals&#12458;&#12503;&#12471;&#12519;&#12531;
#Y&#36600;&#12395;&#20351;&#29992;&#12377;&#12427;&#12487;&#12540;&#12479;:y_var&#12458;&#12503;&#12471;&#12519;&#12531;
#&#12518;&#12491;&#12540;&#12463;&#12394;&#21508;&#12487;&#12540;&#12479;&#12398;&#22522;&#28310;&#12487;&#12540;&#12479;:group&#12458;&#12503;&#12471;&#12519;&#12531;
#&#21508;&#12487;&#12540;&#12479;&#22793;&#21270;&#37327;&#12395;&#23550;&#12377;&#12427;SEM(&#27161;&#26412;&#24179;&#22343;&#12398;&#27161;&#28310;&#35492;&#24046;)&#12434;&#34920;&#31034;:eyelets&#12458;&#12503;&#12471;&#12519;&#12531;;TRUE/FALSE
gg_corset_elongated(data = Long_TestData, x_var = "Time",
                    x_vals = c("Pre_Data", "Post_Data"),
                    y_var = "value", c_var = "Check_Data",
                    faceted = FALSE, group = "ID", eyelets = TRUE,
                    line_size = 0.5, vio_fill = "#ad8a80") 

#&#12467;&#12523;&#12475;&#12483;&#12488;&#12503;&#12525;&#12483;&#12488;&#12398;&#12486;&#12540;&#12510;:theme_ggcorset&#12467;&#12510;&#12531;&#12489;
CorsetGG +
  theme_ggcorset() 

###&#12467;&#12523;&#12475;&#12483;&#12488;&#12503;&#12525;&#12483;&#12488;&#12398;&#20307;&#35009;&#12434;&#25972;&#12360;&#12427;#####
CorsetGG +
  #&#12464;&#12523;&#12540;&#12503;&#12398;&#12509;&#12452;&#12531;&#12488;&#12503;&#12525;&#12483;&#12488;&#12434;&#36861;&#21152;
  geom_point(aes(col = Group), size = 3) +
  theme(legend.direction = "horizontal", 
        legend.position = "top",
        legend.title = element_text(size = 11),
        legend.text = element_text(size = 11), 
        axis.text.x = element_text(size = 12,  colour = "black",
                                   hjust = 0.5, vjust = 0), 
        axis.text.y = element_text(size = 12,  colour = "black",
                                   hjust = 1)) +
  scale_colour_manual("Test_Label",
                      breaks = c("Increase", "Decrease", "No_Change",
                                 "Group1", "Group2", "Group3", "Group4"),
                      values = MetBrewer::met.brewer("Ingres", 7)) +
  ylab("") + xlab("") +
  scale_x_discrete(labels = c("Pre", "Post")) +
  guides(colour = guide_legend(override.aes = list(size = 2),
                               byrow = TRUE))

出力例

・wide型データ用のgg_corsetコマンド

・long型データ用のgg_corset_elongatedコマンド:facetオプション;FALSE

・theme_ggcorsetコマンド

・コルセットプロットの体裁を整える:「geom_point」コマンドでグループのポイントプロットを追加


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

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