2012-04-04 137 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