いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

【R】2層グループのデータを図示したい

・お題:グループ、サブグループになっているデータを、箱ひげ図でうまいこと図示したい。

 

・遺伝子発現データなどでよく見かけるので、やってみる。

 

# ライブラリ読み込み

library(tidyverse)
library(magrittr)

 

# データセット作成

df <- 
  data.frame(
    case_1.IDaaa = c(rnorm(10, 10, 1)), 
    case_1.IDbbb = c(rnorm(10, 11, 1)), 
    case_1.IDccc = c(rnorm(10, 12, 1)), 
    case_2.IDddd = c(rnorm(10, 13, 1)), 
    case_2.IDeee = c(rnorm(10, 14, 1)), 
    case_2.IDfff = c(rnorm(10, 15, 1)), 
    ctrl.IDggg = c(rnorm(10, 5, 1)), 
    ctrl.IDhhh = c(rnorm(10, 6, 1)), 
    ctrl.IDiii = c(rnorm(10, 7, 1)) 
  )

df

# 縦持ちにして、groupとsubgroupを設定
df %<>% # 代入パイプ演算子
  pivot_longer(cols = everything()) %>% # 縦持ち変換
  mutate(
    group = str_replace_all(name, pattern = "\\..*", replacement = "")  # \\でエスケープ、\\.で.を表す。あとの.は任意の1文字。*は任意の回数前の文字繰り返し。
    ) %>% 
  mutate(
    subgroup = str_replace_all(name, pattern = ".*\\.ID", replacement = "") 
  )
df

# オブジェクト作成
p <-
  df %>% 
  ggplot(mapping = aes(x = subgroup, y = value))

 

# 描画
p +
  geom_boxplot()+
  facet_grid( ~ group, drop = TRUE, scales = "free_x") +
  theme_bw() + 
  labs(title = "Taitoru", x = "ID", y = "Value") + 
  theme(
      axis.text.x = element_text(angle = 90),
      text = element_text(size = 15)
    ) 




おわり