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

コルセットプロットは各時点のデータ分布や各データの変化の可視化に有効な手法です。コマンド例では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」コマンドでグループのポイントプロットを追加


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

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.
タイトルとURLをコピーしました