如何生成medoid图

时间:2012-04-01 19:19:41

标签: r plot cluster-analysis

您好我正在使用medoids算法进行分区,使用群集包中的pam函数进行群集。我在聚类的数据集中有4个属性,它们似乎给了我大约6个聚类,我想在这4个属性中生成这些聚类的图,例如1http://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();

我得到一张这样的照片 parallel plot of the cluster

由于我希望在四个不同的点上将一条线作为整个簇的代表,这个输出是错误的而且我尝试用格子玩但我无法弄清楚如何让它接受Rpkm值作为X坐标它总是似乎在Y坐标上对最大值或最小值绘制了这么多行,我不明白它是什么。

如果有人可以帮助我,那将是很棒的。抱歉,如果我的问题对你来说仍然很荒谬。

2 个答案:

答案 0 :(得分:4)

我不知道任何预先生成的函数会生成你指出的图,这对我来说就像是一种平行坐标图。

但是制作这样的情节将是一项相当简单的工作。

  1. 根据群集算法的输出,将一列群集标签(K1,K2等)添加到原始数据集中。

  2. 使用R中众多工具中的一个来聚合数据( plyr aggregate等),以便按每个群集计算相关的汇总统计信息。四个变量。 (你还没有说第一张图实际上在绘制什么。平均值和sd?中位数和MAD?)

  3. 由于您希望将图分割为六个单独的面板或面,您可能希望使用 ggplot lattice 绘制数据,它为创建相同的绘图提供了极好的支持,分割在单个分组向量(即您的情况下的群集)中。

  4. 但这与任何人都可以得到的具体相同,因为你提供的信息很少(即没有像推荐的here这样的最小可运行示例。)

答案 1 :(得分:1)

如何使用cluster包中的clusplotpartitioning 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

enter image description here