簡體   English   中英

使用ggplot2繪制多條不同長度的線

[英]Using ggplot2 to plot multiple lines of different lengths

我有一個2228 x 2 data.frame,看起來像這樣:

> 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')

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

仍然無法復制使用提供的數據和代碼生成的圖形,但是我認為這是您想要的:

library(dplyr)

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

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

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM