2013-05-21 73 views
2

現在我正在寫我的學士論文,我所有的情節都是用ggplot2創建的。現在我需要一個兩個ecdfs的情節,但我的問題是兩個數據幀有不同的長度。但通過增加值來平衡長度,我會改變分佈,因此我的第一個想法是不可能的。但是禁止使用具有不同長度的兩個不同數據框的ecdf圖。結合兩個不同的ecdf情節

daten <- peptidPSMotherExplained[peptidPSMotherExplained$V3!=-1,] 
daten <- cbind (daten , "scoreDistance"= daten$V2-daten$V3)  
daten2 <- peptidPSMotherExplained2[peptidPSMotherExplained2$V3!=-1,] 
daten2 <- cbind (daten2 , "scoreDistance"= daten2$V2-daten2$V3) 
p <- ggplot(daten, aes(x = scoreDistance)) + stat_ecdf() 
p <- p + geom_point(aes(x = daten2$lengthDistance)) 
p 

與R的正常繪圖功能,可以

plot(ecdf(daten$scoreDistance)) 
plot(ecdf(daten2$scoreDistance),add=TRUE) 

,但它看起來我所有的其他情節的不同,我不喜歡這個。

有沒有人爲我解決?

謝謝 托比亞斯


例子:

df <-data.frame(scoreDifference = rnorm(10,0,12)) 
df2 <- data.frame(scoreDifference = rnorm(5,-3,9)) 
plot(ecdf(df$scoreDifference)) 
plot(ecdf(df2$scoreDifference),add=TRUE) 

所以,我怎麼能實現這種在ggplot情節?

+1

有幾個問題:1)請提供一個最小的可重複的數據例子; 2)你不應該在ggplot2中使用'$'; 3)沒有理由擔心有兩層不同長度的數據(但是再次參見1)。 – baptiste

+0

我添加了一個示例 – tkschmidt

回答

0

我認爲,在正確重塑你的數據這樣將可能使GGPLOT2爲你工作:

df <-data.frame(scoreDiff1 = rnorm(10,0,12)) 
df2 <- data.frame(scoreDiff2 = rnorm(5,-3,9)) 
library('reshape2') 
data <- merge(melt(df),melt(df2),all=TRUE) 

然後,data在正確的形狀,你可以簡單地去繪製顏色(或形狀,或任何你想)的東西來區分這兩個數據集:

p <- ggplot(daten, aes(x = value, colour = variable)) + stat_ecdf() 

希望這是你在找什麼!?

+0

是的,謝謝:) – tkschmidt

1

我不知道是什麼GEOM應該使用這樣的地塊,但對於合併兩個數據集,你可以簡單地在一個新的圖層指定數據,

ggplot(df, aes(x = scoreDifference)) + 
    stat_ecdf(geom = "point") + 
    stat_ecdf(data=df2, geom = "point") 
+0

謝謝 - 我將geom更改爲平滑,現在看起來很好。我不知道爲什麼它不適合我的解決方案 - 但我很好:) – tkschmidt