R 带有ggplot的多面热图,用于X的选定部分,带有附加文本标签

R 带有ggplot的多面热图,用于X的选定部分,带有附加文本标签,r,ggplot2,heatmap,R,Ggplot2,Heatmap,我有以下数据: Id = paste ("ID-", 1:5, sep = "") position <- rep(seq (1, 100,10), each = 5) group = rep (rep(rep (1:5, each = length (Id)), each = length(position))) yvar <- rnorm (length(position), 0.5, 0.1) ycat <- c(sample (c

我有以下数据:

Id = paste ("ID-", 1:5, sep = "")
position <- rep(seq (1, 100,10), each = 5)
group = rep (rep(rep (1:5, each = length (Id)), each = length(position)))
yvar <- rnorm (length(position), 0.5, 0.1)
ycat <- c(sample (c("A", "B"), length(yvar), replace = TRUE))
namevar <- rep(Id, length(group)/length(Id))
mydf <- data.frame (namevar, group, position, yvar, ycat)

我想让情节看起来像这样,除了到处都是空白,例如,第一组30-50之间,第五组20-60之间,有点像这样:


这将生成最后一个绘图,但仅对选定区域进行着色:

ggplot(mydf,aes(y=Id,x=position)) +
  facet_wrap(~group) + 
  geom_blank() +    
  geom_tile(data = subset(mydf,(group == 1 & position >= 30 & position <= 50) | 
                                (group == 5 & position >= 20 & position <= 60)),aes(fill = yvar),colour = "black") +
  geom_text(data = subset(mydf,(group == 1 & position >= 30 & position <= 50) | 
                                (group == 5 & position >= 20 & position <= 60)),aes(label = ycat),size = 3) +
  labs(x = NULL,y = NULL)
ggplot(mydf,aes(y=Id,x=position))+
面_包裹(~组)+
geom_blank()+

几何图(数据=子集(mydf,(group==1&position>=30&position=20&position=30&position=20&position是您的问题,如何删除最后一个绘图上的x轴和y轴标签?即如何删除x轴上的0、20、40等,以及如何删除y轴上的ID-1、ID-2?我现在的问题只是对选定区域进行着色,例如组1-x v中的位置值从30到50,组5-x值从20到60,其余部分将是暂时的,但仍然存在。因此,如果要绘制所有值,只需更改着色的平铺?@joran查看编辑,要在我定义的位置之间显示值并删除单元格大纲图,很有意思的是,您选择了组1,5,但当我地块1,2正在绘制!即使我选择1,3或1,2,也始终绘制1,2个面
ggplot(mydf,aes(y=Id,x=position)) +
  facet_wrap(~group) + 
  geom_blank() +    
  geom_tile(data = subset(mydf,(group == 1 & position >= 30 & position <= 50) | 
                                (group == 5 & position >= 20 & position <= 60)),aes(fill = yvar),colour = "black") +
  geom_text(data = subset(mydf,(group == 1 & position >= 30 & position <= 50) | 
                                (group == 5 & position >= 20 & position <= 60)),aes(label = ycat),size = 3) +
  labs(x = NULL,y = NULL)