您好我正在使用medoids算法进行分区,使用群集包中的pam函数进行群集。我在聚类的数据集中有4个属性,它们似乎给了我大约6个聚类,我想在这4个属性中生成这些聚类的图,例如1:http://www.flickr.com/photos/52099123@N06/7036003411/in/photostream/lightbox/“Centroid plot”
但是我可以绘制聚类结果的唯一方法是使用树形图或使用
plot (data, col = result$clustering)
命令似乎生成了与此类似的图
[2]:http://www.flickr.com/photos/52099123@N06/7036003777/in/photostream“pam results”。
虽然第一张图像是质心图,但我想知道R中是否有任何可用的工具可以用中间体图进行相同操作注意它还会在图中打印每个簇的大小。很高兴知道R中是否有任何可用的软件包/解决方案可以帮助实现这一目标,或者如果不是,那么为了实现类似于图1中的图表,应该是一个好的起点。
由于
大家好,我试图像Joran所说的那样解决问题,但我认为我没有正确地理解它,并且没有按照正确的方式完成它,因为它应该完成。无论如何,这是我到目前为止所做的。以下是我尝试聚类的文件的样子
geneID RPKM-base RPKM-1cm RPKM+4cm RPKMtip
GRMZM2G181227 3.412444267 3.16437442 1.287909035 0.037320722
GRMZM2G146885 14.17287135 11.3577013 2.778514642 2.226818648
GRMZM2G139463 6.866752401 5.373925806 1.388843962 1.062745344
GRMZM2G015295 1349.446347 447.4635291 29.43627879 29.2643755
GRMZM2G111909 47.95903081 27.5256729 1.656555758 0.949824883
GRMZM2G078097 4.433627458 0.928492841 0.063329249 0.034255945
GRMZM2G450498 36.15941083 9.45235616 0.700105077 0.194759794
GRMZM2G413652 25.06985426 15.91342458 5.372151214 3.618914949
GRMZM2G090087 21.00891969 18.02318412 17.49531186 10.74302155
以下是Pam集群输出
GRMZM2G181227
1
GRMZM2G146885
2
GRMZM2G139463
2
GRMZM2G015295
2
GRMZM2G111909
2
GRMZM2G078097
3
GRMZM2G450498
3
GRMZM2G413652
2
GRMZM2G090087
2
AC217811.3_FG003
2
使用上面两个文件,我生成了第三个文件,有点像这样,并且具有群集类型K1,K2等形式的群集信息
geneID RPKM-base RPKM-1cm RPKM+4cm RPKMtip Cluster_type
GRMZM2G181227 3.412444267 3.16437442 1.287909035 0.037320722 K1
GRMZM2G146885 14.17287135 11.3577013 2.778514642 2.226818648 K2
GRMZM2G139463 6.866752401 5.373925806 1.388843962 1.062745344 K2
GRMZM2G015295 1349.446347 447.4635291 29.43627879 29.2643755 K2
GRMZM2G111909 47.95903081 27.5256729 1.656555758 0.949824883 K2
GRMZM2G078097 4.433627458 0.928492841 0.063329249 0.034255945 K3
GRMZM2G450498 36.15941083 9.45235616 0.700105077 0.194759794 K3
GRMZM2G413652 25.06985426 15.91342458 5.372151214 3.618914949 K2
GRMZM2G090087 21.00891969 18.02318412 17.49531186 10.74302155 K2
我当然不认为这是joran希望我创建的文件,但我想不出任何其他内容,因此我使用以下代码在上面的文件上运行了格。
clusres<- read.table("clusinput.txt",header=TRUE,sep="\t");
jpeg(filename = "clusplot.jpeg", width = 800, height = 1078,
pointsize = 12, quality = 100, bg = "white",res=100);
parallel(~clusres[2:5]|Cluster_type,clusres,horizontal.axis=FALSE);
dev.off();
我得到一张这样的照片
由于我希望在四个不同的点上将一条线作为整个簇的代表,这个输出是错误的而且我尝试用格子玩但我无法弄清楚如何让它接受Rpkm值作为X坐标它总是似乎在Y坐标上对最大值或最小值绘制了这么多行,我不明白它是什么。
如果有人可以帮助我,那将是很棒的。抱歉,如果我的问题对你来说仍然很荒谬。
答案 0 :(得分:4)
我不知道任何预先生成的函数会生成你指出的图,这对我来说就像是一种平行坐标图。
但是制作这样的情节将是一项相当简单的工作。
根据群集算法的输出,将一列群集标签(K1,K2等)添加到原始数据集中。
使用R中众多工具中的一个来聚合数据( plyr ,aggregate
等),以便按每个群集计算相关的汇总统计信息。四个变量。 (你还没有说第一张图实际上在绘制什么。平均值和sd?中位数和MAD?)
由于您希望将图分割为六个单独的面板或面,您可能希望使用 ggplot 或 lattice 绘制数据,它为创建相同的绘图提供了极好的支持,分割在单个分组向量(即您的情况下的群集)中。
但这与任何人都可以得到的具体相同,因为你提供的信息很少(即没有像推荐的here这样的最小可运行示例。)
答案 1 :(得分:1)
如何使用cluster包中的clusplot
与partitioning around medoids一起使用?这是一个简单的例子(来自示例部分):
require(cluster)
#generate 25 objects, divided into 2 clusters.
x <- rbind(cbind(rnorm(10,0,0.5), rnorm(10,0,0.5)),
cbind(rnorm(15,5,0.5), rnorm(15,5,0.5)))
clusplot(pam(x, 2)) #`pam` does you partitioning