ggplot中的热图 - 没有颜色变化

时间:2017-08-15 19:05:25

标签: r ggplot2 heatmap

我想使用ggplot

绘制简单的热图
library(ggplot2)

my_df <- data.frame(var_1 = sample(c('a','b', 'c'), 1000, replace = TRUE),
                    var_2 = sample(c('foo', 'bar', 'foo_bar'), 1000, replace = TRUE),
                    var_3 = sample(c(1,0), 1000, replace = TRUE))

ggplot(data = my_df, aes(x = var_1, y = var_2, fill = var_3)) +
  geom_tile()

这是我得到的: Heat map

我无法理解哪里没有颜色变化。我在sample函数中更改了行数,但在热图中始终只接收了两种颜色。有什么建议吗?

3 个答案:

答案 0 :(得分:3)

这是因为您选择输入的唯一值是var_3 = sample(c(1,0), 1000, replace = TRUE)中向量的0或1。如果您想要选择介于0和1之间的值,请改用此代码:

var_3 = sample(0:10, 1000, replace = TRUE)/10

答案 1 :(得分:2)

要按因子绘制1和0的比例,您需要为var_3var_1的每个组合计算var_2的平均值。在这里,我将展示如何使用data.table执行此操作,但您也可以使用基础R中的dplyr.summariseaggregate

library(data.table)
setDT(my_df)
ggplot(data = my_df[, var_3 := mean(var_3), by = .(var_1,var_2)], 
       aes(x = var_1, y = var_2, fill = var_3)) +
  geom_tile()

答案 2 :(得分:2)

geom_tile替换为计算所需统计变换的图层:

ggplot(data = my_df, aes(x = var_1, y = var_2)) + 
  stat_summary_2d(fun = "mean", geom = "tile", 
                  aes(z = var_3, fill = ..value..))

enter image description here