2012-04-04 75 views
0

我试图产生与example中相同的图表,但使用不同的数据。这里是我的代码:R中的相关性

library(SciViews) 

args <- commandArgs(TRUE) 
pdfname <- args[1] 
datafile <- args[2] 

pdf(pdfname) 
eqdata = read.csv(datafile , header = T,sep=",") 
(longley.cor <- correlation(eqdata$feqs)) 
# Synthetic view of the correlation matrix 
summary(longley.cor) 
p <- plot(longley.cor) 
print(p) 
dev.off() 

和数据

ques,feqs 
"abc",20 
"def",10 
"ghi",40 
"jkl",10 
"mno",20 
"pqr",10 

我使用这个命令

Rscript ./rscript/correlation.R "/home/co.pdf" "/home/data_correlation.csv" 

enter image description here

代码输出

enter image description here

我想产生这样

enter image description here

+1

可惜我不熟悉'SciViews'但仍相当肯定,计算'correlation'只有一个数据帧的变量是不是一个好主意。 – daroczig 2012-04-04 05:17:44

+0

非常感谢您的建议。我想生成文本的相关性......所以现在就考虑每个单词的频率。任何想法的文字相关? – henna 2012-04-04 05:33:05

+0

如果要关联的变量是“abc”,“def”等的频率,那么每个变量需要多个值。在你的例子中,每个变量只有一个值,并且你不能计算实际上不会变化的事物的协方差。 – Marius 2012-04-04 05:45:42

回答

1

您可以尝试在ellipseplotcorr功能。帮助页面给出等等这个例子:

enter image description here

这似乎是你在找什么?

编辑:

您以后可以添加文字,圆圈被放置在1 - 数瓦尔格。例如: -

data(mtcars) 
Corrmat <- cor(mtcars) 
cols <- ifelse(Corrmat>0, rgb(0,0,abs(Corrmat)), rgb(abs(Corrmat),0,0)) 

library(ellipse) 
plotcorr(Corrmat,col=cols) 

n <- nrow(Corrmat) 
for (i in 1:n) 
{ 
    for (j in 1:n) 
    { 
     text(j,i,round(Corrmat[n-i+1,j],2),col="white",cex=0.6)  
    } 
} 
+0

感谢sacha,我需要在每个椭圆上显示相关性。我可以生成上面的图形,但有标签的问题...在标签中,而不是空间中它被替换为点(。)你有任何想法,如何解决它? – henna 2012-04-05 00:51:15

+1

查看编辑答案。 – 2012-04-05 05:02:29

+0

我仍在使用SciViews软件包。 – henna 2012-04-05 06:16:53