使用R获取热图中垃圾箱的计数

使用R获取热图中垃圾箱的计数,r,ggplot2,heatmap,R,Ggplot2,Heatmap,这个问题来自以下两个主题: 在第一个主题中,用户希望使用stat_bin2d生成热图,然后希望在热图顶部写入每个箱子的计数。用户最初想要使用的方法不起作用,最好的答案是stat_bin2d设计用于geom=“rect”而不是“text”。没有得到令人满意的答复 第二个问题与第一个问题几乎相同,但有一个关键区别,即第二个问题中的变量是文本,而不是数字。答案生成所需的结果,将一个料仓的计数值放置在stat_2d热图中的料仓上 为了比较这两种方法,我准备了以下代码: library(ggp

这个问题来自以下两个主题:

在第一个主题中,用户希望使用stat_bin2d生成热图,然后希望在热图顶部写入每个箱子的计数。用户最初想要使用的方法不起作用,最好的答案是stat_bin2d设计用于geom=“rect”而不是“text”。没有得到令人满意的答复

第二个问题与第一个问题几乎相同,但有一个关键区别,即第二个问题中的变量是文本,而不是数字。答案生成所需的结果,将一个料仓的计数值放置在stat_2d热图中的料仓上

为了比较这两种方法,我准备了以下代码:

    library(ggplot2)
    data <- data.frame(x = rnorm(1000), y = rnorm(1000))
    ggplot(data, aes(x = x, y = y))
      geom_bin2d() + 
      stat_bin2d(geom="text", aes(label=..count..))
库(ggplot2)
数据另一项工作(但可能更少的工作)。与
.count..
方法类似,您可以分两步从绘图对象中提取计数

library(ggplot2)

set.seed(1)
dat <- data.frame(x = rnorm(1000), y = rnorm(1000))

# plot
p <- ggplot(dat, aes(x = x, y = y)) + geom_bin2d() 

# Get data - this includes counts and x,y coordinates 
newdat <- ggplot_build(p)$data[[1]]

# add in text labels
p + geom_text(data=newdat, aes((xmin + xmax)/2, (ymin + ymax)/2, 
                  label=count), col="white")
库(ggplot2)
种子(1)

dat我认为这是一个比我以前的更好的解决方案,因为我可以使用geom_bin2d存储数据,而无需手动操作。非常感谢。这很好,适用于我的第一张图表,但不幸的是,我的第二张图表在x轴上有一个log10转换,这导致了问题。
ggplot\u build
工作正常,但将其映射回图表会导致问题。我认为这是xmax+xmin部分我需要改变,但不知如何改变。我尝试了应用
scale\u x\u log10
并将
trans=log
添加到
geom\u text
@DaveRGP;你能演示一下你是如何应用转换的吗。。对于eaxmple,上面的例子(需要编辑,我想没有零)@user20650感谢您的回复,但我想我在这里有一个答案。再次感谢。请使用
stat\u bin2d
记下此答案:
    library(ggplot2)
    data <- data.frame(x = rnorm(1000), y = rnorm(1000))
    x_t<-as.character(round(data$x,.1))
    y_t<-as.character(round(data$y,.1))
    x_x<-as.character(seq(-3,3),1)
    y_y<-as.character(seq(-3,3),1)
    data<-cbind(data,x_t,y_t)



    ggplot(data, aes(x = x_t, y = y_t)) +
      geom_bin2d() + 
      stat_bin2d(geom="text", aes(label=..count..))+
      scale_x_discrete(limits =x_x) +
      scale_y_discrete(limits=y_y) 
library(ggplot2)

set.seed(1)
dat <- data.frame(x = rnorm(1000), y = rnorm(1000))

# plot
p <- ggplot(dat, aes(x = x, y = y)) + geom_bin2d() 

# Get data - this includes counts and x,y coordinates 
newdat <- ggplot_build(p)$data[[1]]

# add in text labels
p + geom_text(data=newdat, aes((xmin + xmax)/2, (ymin + ymax)/2, 
                  label=count), col="white")