2016-05-13 87 views
0

我有一個2228的2 data.frame,看起來是這樣的:使用GGPLOT2繪製多個不同長度的線路

> head(diffSums, 10) 
           nTranscripts  Library 
D6_NoSort_2250b_ATTATACGCCCC   63963 NoSort_2250b 
D6_EcadSort_6000b_CCACACCCAGCC  193050 EcadSort_6000b 
D6_EcadSort_2250b_CCGATGATTAGC  77631 EcadSort_2250b 
D6_EcadSort_2250b_TGTCTGCTTTAG  106599 EcadSort_2250b 
D6_EcadSort_2250b_TTCACAAGTTTC  88775 EcadSort_2250b 
D6_EcadSort_6000b_CCATATCCAGCT  97861 EcadSort_6000b 
D6_EcadSort_6000b_CAACGACTTAGG  91813 EcadSort_6000b 
D6_EcadSort_2250b_AGTGAACAGGCG  80503 NoSort_2250b 
D6_EcadSort_2250b_AAGCGGCTGCGC  93326 EcadSort_2250b 
D6_EcadSort_2250b_CGTTTCACTTCG  72013 NoSort_2250b 

其中每diffSums$Library條目的數量而變化:

> table(diffSums$Library) 

    EcadSort_2250b EcadSort_2250x8b EcadSort_6000b EcadSort_6000x3b  NoSort_2250b NoSort_2250x23b NoSort_2250x8b  NoSort_6000b NoSort_6000x3b 
      136    321    131    422    269    72    452    192    233 

我想用ggplot2爲同一圖上的每個庫繪製一條線。我能夠通過手動grep'n完成每個庫和繪圖:

ggplot() + 
    geom_line(data=diffSums[grep("EcadSort_6000x3b", rownames(diffSums)),], aes(x=seq(as.vector(table(diffSums$Library))[4]), y=sort(nTranscripts, decreasing=TRUE)), color='green') + 
    geom_line(data=diffSums[grep("NoSort_2250b", rownames(diffSums)),], aes(x=seq(as.vector(table(diffSums$Library))[5]), y=sort(nTranscripts, decreasing=TRUE)), color='blue') 

...但我知道必須有一個更簡單的方法!任何幫助將不勝感激。

+0

什麼的結構你想要繪製的數據?上面包含的示例數據中缺少diffSums的'lib'列。另外,什麼是colSums.diff。在這種情況下?如果您包含樣本數據並明確說明您要繪製的內容,那將更容易提供幫助。 – shreyasgm

+0

@shreyasgm對不起! 'lib' =='庫'。代碼已更新。 – user2117258

回答

1

它仍然無法重現您生成使用所提供的數據和代碼的圖形,但我認爲這是你在找什麼:

library(dplyr) 

diffSums <- diffSums %>% 
    group_by(Library) %>% 
    arrange(-nTranscripts) %>% 
    mutate(numLib = seq_len(n())) 

ggplot(diffSums, aes(numLib,nTranscripts,colour = Library)) + geom_line() 

enter image description here