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

标签 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("A", "B"), length(yvar), replace = TRUE))
namevar <- rep(Id, length(group)/length(Id))
mydf <- data.frame (namevar, group, position, yvar, ycat)
group是一个分面变量,position是一个连续的 x 变量。 yvar用于填充瓷砖的颜色。 ycat是每个图块的文本标签。我想为所有值创建一个带有空白空间的图,除了我选择使用填充颜色和标签绘制的某些图块。
这是我到目前为止所拥有的:
  ggplot(mydf,aes(y=Id,x=position)) +
      facet_wrap(~group) +     
      geom_tile(aes(fill = yvar),colour = "black") +
      geom_text(aes(label = ycat)) +
      labs(x = NULL,y = NULL)
enter image description here
我希望情节看起来像这样,除了到处都有空格,例如,30-50 之间的第 1 组和 20-60 之间的第 5 组,有点像这样:
enter image description here

最佳答案

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

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)

关于r - 带有 ggplot 的多面热图,用于 X 的选定部分,并带有附加文本标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10448962/

相关文章:

r - 如何删除部分 y 轴并反转 ggplot2 中的轴

r - 使用 r 中嵌入的字体将 ggplot 图形保存为 PDF

python - matplotlib 中的 3D 离散热图

R {wordcloud}包,scale中的值代表什么?

r - 你能把标签放在单杠之间吗?

python - 在 seaborn 热图中分隔组的线

Python-如何在 sns.heatmap 的顶部和底部,左侧和右侧都有轴刻度

r - 使用 R 生成泊松过程

r - 许多数据框上的 ggplot 更改标题

r - 在 R 中绘制积分