我是R语言的新手,尝试在一个数据表上进行聚类分析,其中每行代表一个对象,每列代表已测量的特征。我学习了一些聚类教程,确实得到了一些结果,然而,聚类后产生的热图与使用另一个程序从相同的数据表绘制的热图完全不同。另一个程序的热图能够清楚地显示出对象间标记表达式的差异,但我的热图并没有显示出太多差异,也无法识别出任何聚类模式(即颜色),看起来只是一组随机混杂在一起的颜色(没有明显对比度)。以下是我的代码例子,请帮忙看看可能哪里做错了。
mydata <- read.table("mydata.csv")
datamat <- as.matrix(mydata)
datalog <- log(datamat)
我在聚类中使用日志值,因为我知道其他程序也是这样做的
library(gplots)
hr <- hclust(as.dist(1-cor(t(datalog), method="pearson")), method="complete")
mycl <- cutree(hr, k=7)
mycol <- sample(rainbow(256)); mycol <- mycol[as.vector(mycl)]
heatmap(datamat, Rowv=as.dendrogram(hr), Colv=NA,
col=colorpanel(40, "black","yellow","green"),
scale="column", RowSideColors=mycol)
我再次绘制原始颜色,但使用对数聚类,因为我知道这就是其他程序所做的。
我尝试了一些方法,但没有得到看起来像一组簇热图的任何东西。当我去掉比例时,热图变得非常暗(我非常确定我需要以某种方式通过列来缩放或标准化数据)。我也尝试用k-means进行聚类,但这同样没有帮助。我的想法是由于两个异常值,可能没有完全使用颜色刻度表,但即使删除它们略微增加了在热图上绘制的颜色范围,这仍然没有显示适当的簇。
还有其他可以尝试的内容吗?
并且是否可以改变heatmap的颜色刻度表,以便将离群值找到一个具有“大于某个特定值的所有内容”范围的最后一个箱中?我尝试过heatmap.2(参数“breaks”),但我没有成功,也没有成功使用heatmap函数中使用的行侧颜色。