2014-03-25 35 views
1

這與this question about ggplot changing the order of variable names有關。那裏給出的答案,手動強制重新排序因子水平,並不能解決問題。一個例子是melt(matcor(data.A,data.B)$XYcor)輸出,該輸出重複兩次的行:解決ggplot排序/變量名稱組合,但不實施固定順序

data.A <- as.data.frame(matrix(runif(c(25)),nrow=5,ncol=5)) 
data.B <- as.data.frame(matrix(runif(c(25)),nrow=5,ncol=5)) 

library(ggplot) 
library(CCA) 
qplot(x=Var1, y=Var2, data=melt(matcor(data.A,data.B)$XYcor), fill=value, geom="tile") 

此情節背後的想法是顯示兩個多變量集之間的互相關,如img.matcor作用:

img.matcor(matcor(data.A,data.B)) 

XYcor plot

在這幅圖中,左上角和右下象限是data.Adata.B的自相關矩陣,而其他象限是第e互相關矩陣。將數據重新排序爲ggplot2會破壞這種關係。 (在另一方面,ggplot使得這一下更好的辦法。)

調用meltfactor.levels=FALSE不解決這個問題,不幸的是,在第一位置,melt訂單列正常。有沒有解決方法?

回答

1

我認爲你錯了陰謀與qplot()至少爲樣本數據,因爲你必須在data.Adata.B相同的列名,然後在qplot()你只有實際相關性的一部分。如果您更改其中一個數據幀的列名,則qplot()看起來更類似於img.matcor()。現在只有自相關矩陣是一個左下角和右上角的部分。

set.seed(1) 
data.A <- as.data.frame(matrix(runif(c(25)),nrow=5,ncol=5)) 
names(data.A)<-c("A1","A2","A3","A4","A5") 
data.B <- as.data.frame(matrix(runif(c(25)),nrow=5,ncol=5)) 
qplot(x=Var1, y=Var2, data=melt(matcor(data.A,data.B)$XYcor), 
       fill=value, geom="tile") 

enter image description here

+0

這是很好的瞭解。不幸的是,它破壞了'data.table'這種方便的語法,像'matcor(mydata [Class == 0,mycols,with = FALSE],mydata [Class!= 0,mycols,with = FALSE]' –

+1

我看到你的但我不確定您可以使用相同的列名稱,因爲您可以獲得用於x軸和y軸的相同離散名稱,並且這些數據在同一位置的圖上重疊。 –