在 R 中创建动态热图

三木帕尔

我想创建一段代码,允许我根据 df 中的值创建热图。然而,这些值并不总是出现(即一些数据集包含 4 个类,一些 3 类和一些 2 类)。

例如,一个 df 可能如下所示:

column <- c(rep(c(1),5),rep(c(2),5),rep(c(3),5),rep(c(4),5),rep(c(5),5))
row <- rep(1:5, 5)
class <- c(0,0,1,2,1,2,2,3,0,1,2,3,1,2,0,1,0,0,2,3,3,2,2,2,1)
df <- data.frame(column, row, class)
df

而另一个将具有相同的行数,但只有类 0、1 和 3(例如)。

我想使用以下逻辑为相应的网格着色:

class 0 = red
class 1 = green
class 2 = blue
class 3 = grey

我希望能够通过热图代码传递不同的数据集,而不必更改任何内容即可获得所需的结果。

注意:数据的行数将始终相同,热图的大小将始终相同。

马布洛

随着ggplot你可以创建你希望你的类的价值观和颜色,然后使用一个名为向量scale_fill_manual

library(ggplot2)
set.seed(123)
column <- c(rep(c(1),5),rep(c(2),5),rep(c(3),5),rep(c(4),5),rep(c(5),5))
row <- rep(1:5, 5)
class <- c(0,0,1,2,1,2,2,3,0,1,2,3,1,2,0,1,0,0,2,3,3,2,2,2,1)
df <- data.frame(column, row, class)


cols <- c('0' = 'red', '1' = 'green', '2' = 'blue', '3' = 'grey')
ggplot(df, aes(column, row, fill= factor(class))) + 
  geom_tile()+
  scale_fill_manual(values = cols)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章