我一直在使用层次聚类研究一些数据集。在这些数据集中,我想要使用一定数量的变量来聚类数据,然后还有其他分类变量我不希望聚类但仍想要可视化。
我想要做的是找到一种方法来添加一个等级"到聚类算法生成的热图,我可以在其中查看二进制分类(红色为1,蓝色为0),而不实际聚类此数据。这样,我可以通过聚类来评估我的分类响应的组合程度。
这是一个简化的例子:
library("gplots")
set.seed(1)
## creating random data to input into hierarchial clustering algorithm
data <- matrix(rexp(100, rate = 0.1), ncol = 10)
colnames(data) <- c("var1", "var2", "var3", "var4", "var5", "var6",
"var7", "var8", "var9", "var10")
# these are the two classification labels for each data point
classification1 <- c(1, 1, 0, 1, 1, 0, 0, 0, 1, 1)
# I want to visualize how well the clustering algorithm groups
# the data correlates with the classifications without
# clustering on these classifications
classification2 <- c(0, 0, 0, 0, 0, 1, 1, 1, 1, 0)
par(mar = c(1, 4.5, 0.1, 0.1))
matrix = rbind(c(1, 2), c(3, 4), c(5, 6))
wid = c(1, 1)
hei = c(0.5, 10)
hclustfunc <- function(x) hclust(x, method = "complete")
distfunc <- function(x) dist(x, method = "euclidean")
my_palette <- colorRampPalette(c("yellow", "orange", "darkorange",
"red", "darkred"))(n = 1000)
heatmap.2(as.matrix(data), dendrogram = "row", trace = "none",
margin = c(8, 9), hclust = hclustfunc, distfun = distfunc,
col = my_palette, key = FALSE, key.xlab = "", key.title = "Clustering Algorithm",
key.ylab = "", keysize = 1.25, density.info = "density",
lhei = hei)
这会产生热图,它给了我很多信息。我现在要做的是在热图右侧追加两列,聚类算法不用于聚类。
这两列将是&#34;分类1和#34;的二进制标签。和&#34;分类2&#34; (并且红色单元格为1,蓝色单元格为0)。我只想要了解这些分类响应在树形图中组合在一起的效果。
答案 0 :(得分:0)
如果您只有一个要添加的分类,则可以heatmap.2
使用RowSideColors
选项。但如果你有多个分类要添加,你将使用heatmap.plus
。这些选项与heatmap和heatmap.2略有不同,但对于您的问题,重要的是RowSideColors
选项采用矩阵。
library(heatmap.plus)
class1_cols <- c('red', 'blue')[classification1+1]
class2_cols <- c('red','blue')[classification2+1]
anno <- data.frame(class1 = class1_cols, clas2 = class2_cols)
heatmap.plus(as.matrix(data), col = my_palette,
RowSideColors = as.matrix(anno))