首页 > 解决方案 > 在 ggplot2 热图中添加分组

问题描述

您好,我有以下数据集:

gene_symbol <- c("DADA", "SDAASD", "SADDSD", "SDADD")
panel <- c("growth", "growth", "big", "small")
ASDDA <- c("normal", "over", "low", "over")
ASDDb <- c("normal", "over", "low", "over")
ASDDAf <- c("normal", "over", "low", "over")
Gene_states22 <- data.frame(gene_symbol, panel, ASDDA, ASDDb, ASDDAf)

除了使用以下方法创建热图之外,我还想实现什么:

library(plotly)
library(ggplot2); library(reshape2)
g <- melt(Gene_states22, id.vars = c("gene_symbol","panel"))
p1 <- ggplot(g, aes(gene_symbol,variable)) + 
  geom_tile(aes(fill = value), colour = "grey50") +
  scale_fill_manual(values=c("white", "red", "blue"))+
  labs(title = "Heatmap",x = "gene_symbol",y="sample",fill="value")+
  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 = element_text(family = "sans serif", 
                                 size = 11),
        axis.title.y = element_text(margin = margin(t = 0, r = 25, b = 0, l = 25)),
        panel.background = element_rect(fill = NA),
        panel.grid.major = element_line(colour = "grey50"))
p1
ggplotly(p1)%>%
  layout(autosize = F, 
         width = 1450, 
         height = 600,
         hoverlabel = list(bgcolor = "white",
                           font = list(family = "sans serif", 
                                       size = 9, 
                                       color = "black")))

是根据 对我的价值观进行分组panel。例如: 在此处输入图像描述

这里有第二个 x 轴,它按“机械”、“电气”、“液压”对值进行分组。我想对panel. 请注意,图表应该是交互式的,这就是我使用的原因ggplotly()

我设法使用@aosmith 答案,但结果有点难看 在此处输入图像描述

标签: rggplot2plotly

解决方案


推荐阅读