2017-10-05 18 views
1

ggplot2を使用してヒートマップを作成しようとしました。ggplotのグループ化ラベル

#DATA 
set.seed(42) 
df1 = data.frame(ID = paste0("I", 1:40), 
       group = rep(c("Dry", "Rain"), each = 20), 
       subgroup = rep(paste0("S", 1:4), each = 10), 
       setNames(data.frame(replicate(8, rnorm(40))), letters[1:8])) 
library(reshape2) 
df1 = melt(df1, id.vars = c("ID", "group", "subgroup")) 
df1 = df1[order(df1$group, df1$subgroup),] 
df1$fact = paste(df1$subgroup, df1$ID) 
df1$fact = factor(df1$fact, levels = unique(df1$fact)) 

#PLOT 
library(ggplot2) 
ggplot(df1, aes(x = variable, y = fact, fill = value)) + 
    geom_tile() + 
    scale_y_discrete(labels = df1$subgroup[!duplicated(df1$ID)]) 

プロットが正確に何であるか、私は事実を除いたいというラベルS1S2S3、およびS4繰り返し10回ずつ。それらを一度だけ表示して、S1,S2,S3S4の間に何らかの休憩を入れる方法はありますか?

enter image description here

二次y軸としてプロットでsubgroupの左にgroupを配置する方法があるかどうか、私も興味がありますが、それはオプションです。

答えて

1

facet_gridは、y軸上にサブグループインジケータとサブグループ間に空白区切りを持つ両方に対処することができます。

themeのy軸ラベルを削除して、重複を避けることもできます。

ggplot(df1, aes(x = variable, y = fact, fill = value)) + 
    geom_tile() + 
    facet_grid(subgroup~., scales="free_y") + 
    theme(axis.text.y = element_blank()) 

注:scales="free_y"factはサブグループで同一ではないため必要であり、このパラメータが存在しない場合に出力を参照。

enter image description here

関連する問題