【发布时间】:2018-12-02 02:03:43
【问题描述】:
我有这个数据框:
gene_symbol<-c("DADA","SDAASD","SADDSD","SDADD","ASDAD","XCVXCVX","EQWESDA","DASDADS","SDASDASD","DADADASD","sdaadfd","DFSD","SADADDAD","SADDADADA","DADSADSASDWQ","SDADASDAD","ASD","DSADD")
panel<-c("growth","growth","growth","growth","big","big","big","small","small","dfgh","DF","DF","DF","DF","DF","gh","DF","DF")
ASDDA<-c("normal","over","low","over","normal","over","low","over","normal","over","DF","DF","DF","DF","DF","DF","DF","DF")
ASDDb<-c("normal","over","low","over","normal","over","low","over","normal","over","DF","DF","DF","DF","DF","DF","DF","DF")
ASDDAf<-c("normal","over","low","over","normal","over","low","over","normal","over","DF","DF","DF","DF","DF","DF","DF","DF")
ASDDAf1<-c("normal","over","low","over","normal","over","low","over","normal","over","DF","DF","DF","DF","DF","DF","DF","DF")
ASDDAf2<-c("normal","over","low","over","normal","over","low","over","normal","over","DF","DF","DF","DF","DF","DF","DF","DF")
ASDDAf3<-c("normal","over","low","over","normal","over","low","over","normal","over","DF","DF","DF","DF","DF","DF","DF","DF")
ASDDAf4<-c("normal","over","low","over","normal","over","low","over","normal","over","DF","DF","DF","DF","DF","DF","DF","DF")
ASDDAf5<-c("normal","over","low","over","normal","over","low","over","normal","over","DF","DF","DF","DF","DF","DF","DF","DF")
ASDDA1<-c("normal","over","low","over","normal","over","low","over","normal","over","DF","DF","DF","DF","DF","DF","DF","DF")
ASDDb1<-c("normal","over","low","over","normal","over","low","over","normal","over","DF","DF","DF","DF","DF","DF","DF","DF")
ASDDAf1<-c("normal","over","low","over","normal","over","low","over","normal","over","DF","DF","DF","DF","DF","DF","DF","DF")
ASDDAf11<-c("normal","over","low","over","normal","over","low","over","normal","over","DF","DF","DF","DF","DF","DF","DF","DF")
ASDDAf21<-c("normal","over","low","over","normal","over","low","over","normal","over","DF","DF","DF","DF","DF","DF","DF","DF")
ASDDAf31<-c("normal","over","low","over","normal","over","low","over","normal","over","DF","DF","DF","DF","DF","DF","DF","DF")
ASDDAf41<-c("normal","over","low","over","normal","over","low","over","normal","over","DF","DF","DF","DF","DF","DF","DF","DF")
ASDDAf51<-c("normal","over","low","over","normal","over","low","over","normal","over","DF","DF","DF","DF","DF","DF","DF","DF")
Gene_states22 <- data.frame(gene_symbol, panel, ASDDA, ASDDb, ASDDAf, ASDDAf1, ASDDAf2,
ASDDAf3, ASDDAf4, ASDDAf5, ASDDA1, ASDDb1, ASDDAf1, ASDDAf11,
ASDDAf21, ASDDAf31, ASDDAf41, ASDDAf51)
我创建了 6 个热图:
library(plotly)
library(ggplot2); library(reshape2)
HG3 <- split(Gene_states22[,1:15], Gene_states22$panel)
HG4 <- melt(HG3, id.vars= c("gene_symbol","panel"))
HG4 <- HG4[,-5]
HG5 <- split(HG4, HG4$panel)
p <- list()
for(i in 1:as.numeric(length(HG5))){
p[[i]] <- ggplotly(
ggplot(HG5[[i]],
aes(gene_symbol,variable)) +
geom_tile(aes(fill = value),
colour = "grey50") +
scale_fill_manual(values=c("white", "red", "blue","black","yellow","green","brown"))+
labs(title = "Heatmap", subtitle = names(HG5[i]),
x = "gene_symbol", y = "sample", fill = "value")+
guides(fill=FALSE)+
theme(title = element_text(family = "sans serif", size = 14, face = "bold"),
axis.title = element_text(family = "sans serif", size = 16,
face = "bold", color = "black"),
axis.text.x = element_text(family = "sans serif", size = 11),
axis.text.y= element_text(family = "sans serif", size = 11),
axis.title.y = element_text(vjust = 10,hjust = 10),
panel.background = element_rect(fill = NA),
panel.grid.major = element_line(colour = "grey50"),
panel.spacing = unit(0, "lines"),
strip.placement = "outside")
)%>%
layout(autosize = F, width=1350, height=600,
hoverlabel = list(bgcolor = "white",
font = list(family = "sans serif", size = 9, color = "black")))
}
然后我将它们与subplot() 合二为一
subplot(p) %>%
layout(yaxis = list(title = "sample"),
xaxis=list(title=names(HG5[1])),
margin = list(l = 200, b = -10, t =-10),
xaxis2 = list(title = names(HG5[2])),
xaxis3 = list(title = names(HG5[3])),
xaxis4 = list(title = names(HG5[4])),
xaxis5 = list(title = names(HG5[5])),
xaxis6 = list(title = names(HG5[6])))
如下图所示,当我创建 6 个热图作为不同类型的 panel 时,该图正确显示。
问题是panel 类型的数量可能从 1 到 8 不等,所以我想在我的子图中默认提供 8 个轴标题。但是当我添加一个附加标题时:
subplot(p)%>%
layout(yaxis = list(title = "sample"),
xaxis=list(title=names(HG5[1])),
margin = list(l = 200, b = -10, t =-10),
xaxis2 = list(title = names(HG5[2])),
xaxis3 = list(title = names(HG5[3])),
xaxis4 = list(title = names(HG5[4])),
xaxis5 = list(title = names(HG5[5])),
xaxis6 = list(title = names(HG5[6])),
xaxis7 = list(title = names(HG5[7])))
我无法弄清楚为什么会发生这种情况,当然我会在我选择的关于 xaxes 标题的替代解决方案中打开。
【问题讨论】:
-
按面板分面(而不是为每个面板制作单独的图)对您的情况有用吗?这样就可以避免所有手动标记。
-
你能解决这个问题吗?我刚开始使用 ggplot2,我不知道该怎么做