我想创建一段代码,允许我根据 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] 删除。
我来说两句