集群、热图和通过 R 从集群中获取信息
clusters, heatmap and getting info from clusters by R
我最近开始使用 R 来聚类我的数据。我的目的是制作一个带有相关树状图的热图,并在热图上通过正方形识别聚类。
到目前为止,我尝试了 gplots
包中的 hclust
,我可以使用以下代码在树状图上绘制矩形:
a <-read.table ("test.txt", header = TRUE)
b <- as.dist(a)
dend <- hclust(b, method = "complete")
plot(dend)
groups <- cutree(dend, k=3)
rect.hclust(dend, k=3, border = "green")
我的 test.txt 文件如下所示:
a b c d e f
a 1 0.1 0.9 0.5 0.65 0.9
b 0.1 1 0.39 0.83 0.47 0.63
c 0.9 0.39 1 0.42 0.56 0.84
d 0.5 0.83 0.42 1 0.95 0.43
e 0.65 0.47 0.56 0.95 1 0.14
f 0.9 0.63 0.84 0.43 0.14 1
我尝试了这段代码来获取树状图和相关的聚类。
我真正想要的是类似但带有热图的东西。我想要集群周围带有正方形的热图以及不同集群的成员列表。热图应如下所示:
当我处理大数据(5200 x 700 矩阵)时,我需要一种方法来保存每个集群的成员列表。
我也尝试了 pheatmap
包中的 pheatmap
,但我不确定聚类,我不能在聚类周围有矩形。
我非常乐意接受建议和意见。
您正在寻找这样的东西吗?我手动创建了矩形,您可能正在寻找 R 来创建上面的三个集群。
data <- read.table(file = "clipboard") # copied your test.txt file from above
data.m <- melt(data)
ggplot(data.m, aes(x=variable, y=value, fill=value)) + geom_tile() +
scale_fill_gradient(low="red", high="green") +
annotate("rect", xmin = min(as.integer(data.m$variable)), xmax = max(as.integer(data.m$variable)),
ymin = .01, ymax = .2, fill = "transparent", col="black", lwd=2)
我最近开始使用 R 来聚类我的数据。我的目的是制作一个带有相关树状图的热图,并在热图上通过正方形识别聚类。
到目前为止,我尝试了 gplots
包中的 hclust
,我可以使用以下代码在树状图上绘制矩形:
a <-read.table ("test.txt", header = TRUE)
b <- as.dist(a)
dend <- hclust(b, method = "complete")
plot(dend)
groups <- cutree(dend, k=3)
rect.hclust(dend, k=3, border = "green")
我的 test.txt 文件如下所示:
a b c d e f
a 1 0.1 0.9 0.5 0.65 0.9
b 0.1 1 0.39 0.83 0.47 0.63
c 0.9 0.39 1 0.42 0.56 0.84
d 0.5 0.83 0.42 1 0.95 0.43
e 0.65 0.47 0.56 0.95 1 0.14
f 0.9 0.63 0.84 0.43 0.14 1
我尝试了这段代码来获取树状图和相关的聚类。
我真正想要的是类似但带有热图的东西。我想要集群周围带有正方形的热图以及不同集群的成员列表。热图应如下所示:
当我处理大数据(5200 x 700 矩阵)时,我需要一种方法来保存每个集群的成员列表。
我也尝试了 pheatmap
包中的 pheatmap
,但我不确定聚类,我不能在聚类周围有矩形。
我非常乐意接受建议和意见。
您正在寻找这样的东西吗?我手动创建了矩形,您可能正在寻找 R 来创建上面的三个集群。
data <- read.table(file = "clipboard") # copied your test.txt file from above
data.m <- melt(data)
ggplot(data.m, aes(x=variable, y=value, fill=value)) + geom_tile() +
scale_fill_gradient(low="red", high="green") +
annotate("rect", xmin = min(as.integer(data.m$variable)), xmax = max(as.integer(data.m$variable)),
ymin = .01, ymax = .2, fill = "transparent", col="black", lwd=2)