2011-02-23 25 views
0

努力与此树状图中发现的代码块,它的工作,直到电话:如何用Python创建非ASCII树状图?

r('mt_dist <- dist(t(mt))') 

然后喷出的错误:

RPy_RException: Error in dist(t(mt)) : (list) object cannot be coerced to type 'double'

,直到这一点它看起来不错.. 。我可能错过了一些非常简单的东西

任何帮助?

#importing modules 
from numpy import array 
from random import normalvariate,shuffle 
from rpy import r 

# creating a random matrix 
# creating it with different 'samples' in different columns 
mt = [] 
for l in range(20): #20 lines 
    line = [] 
    means = range(1,9) 
    for c in range(8): # 8 columns 
     #Colum 1: mean 1; Column 2: mean 2.... values normally distributed s.d. = 0.5  
     line.append(normalvariate(means.pop(), 0.5)) 

    mt.append(line) 

# once we have a matrix, transform it in an array 
mt_array = array(mt) 

# The R work 
# Pass the array to 'mt' variable in R 
r.assign("mt", mt_array) 

# manipulate R via r('command') 
r('print(mt)') #print the matrix 'mt' to check values 

#The clustering process 
#Calculating distances with 'dist' 
#'dist' calculates distance among lines, so I am transposing (with t()) in order to have my columns clustered 
## I guess 'dist' uses euclidian distance as default 

r('mt_dist <- dist(t(mt))') 
# hclust does the clustering with upgma as default 

r('result = hclust(mt_dist)') 

# directs the output to a determinde file 
r('png("output_file.png")') 

# plot the result 
labels = ["sample A", "sample B","sample C", "sample D","sample E", "sample F", "sample G", "sample H"] 
r.assign("labels", labels) 
r('plot(result, labels=labels, main="My title")') 

# 'close' you output 
r('dev.off()') 

回答

1

这不是你的RPy _...异常问题的答案。而是提供回答您的标题How do I create a non-ascii dendrogram with Python?。你可以试试这个来绘制dendrogram

+0

即时膝盖在scipy和matplotlib深处,和作品。 ive得到了所有安装并运行了几个示例。 我大概在这里问了这个问题 - http://stackoverflow.com/questions/5089030/how-do-i-create-a-radial-cluster-like-the-following-code-example-in-python – Morvern 2011-02-23 09:28:46

+0

@Morvern:所以我的回答帮助你移动正确的方向;-)。 – eat 2011-02-23 10:05:50

+0

true〜你能帮助你提供的链接吗?呵呵 – Morvern 2011-02-24 04:38:28