热图值与(GGPLOT2)(heatmap with values (ggplot2))

2019-07-18 03:10发布

我已经看到在各种R图形系统,包括晶格和基础作出这样的值热图:

我倾向于使用ggplot2了一下,希望能够使热图绘制与相应的单元格的值。 这里的热图和使用尝试geom_text

library(reshape2, ggplot2)
dat <- matrix(rnorm(100, 3, 1), ncol=10)
names(dat) <- paste("X", 1:10)
dat2 <- melt(dat, id.var = "X1")
p1 <- ggplot(dat2, aes(as.factor(Var1), Var2, group=Var2)) +
    geom_tile(aes(fill = value)) +
    scale_fill_gradient(low = "white", high = "red") 
p1

#attempt
labs <- c(apply(round(dat[, -2], 1), 2, as.character))
p1 +  geom_text(aes(label=labs), size=1)

通常我可以找出x和y的值通过,但我没有在这种情况下,因为知道这个信息不是存储在数据集。 我怎么能放在热图的文本?

Answer 1:

这已被更新,以符合tidyverse原则,不断提升使用较差的GGPLOT2

每SlowLeraner的评论我很容易能够做到这一点:

library(tidyverse)

## make data
dat <- matrix(rnorm(100, 3, 1), ncol=10)

## reshape data (tidy/tall form)
dat2 <- dat %>%
    tbl_df() %>%
    rownames_to_column('Var1') %>%
    gather(Var2, value, -Var1) %>%
    mutate(
        Var1 = factor(Var1, levels=1:10),
        Var2 = factor(gsub("V", "", Var2), levels=1:10)
    )

## plot data
ggplot(dat2, aes(Var1, Var2)) +
    geom_tile(aes(fill = value)) + 
    geom_text(aes(label = round(value, 1))) +
    scale_fill_gradient(low = "white", high = "red") 



文章来源: heatmap with values (ggplot2)
标签: r ggplot2