2014-03-06 89 views
1

我想繪製一個基於位置的長度直方圖。我試圖覆蓋直方圖,其中一個位置的數據是一種顏色,另一個位置是不同的顏色。覆蓋直方圖R

這裏是R代碼我到目前爲止,僅僅繪製直方圖:

fasta<-read.csv('fastadata.csv',header = T) 
    norton<-fasta[fasta$SampleID == ">P.SC1Norton-28F",] 
    cod<-fasta[fasta$SampleID == ">P.SC4CapeCod-28F ",] 
    bins <- seq(200, 700, by=25) 
    hist(fasta[,3], breaks=bins, main="Histogram of ReadLengths of a set bin size for Cape Cod and Norton", xlab="ReadLengths") 

我一直看到使用ggplot,但我不能確定如何一個表中使用此功能,並使用我使用了分塊。

dput(head(fasta))輸出:

structure(list(SampleID = structure(c(2L, 2L, 2L, 2L, 2L, 2L), .Label = c(">P.SC1Norton-28F",">P.SC4CapeCod-28F"), class = "factor"), SeqName = structure(c(5674L, 5895L, 5731L, 5510L, 4461L, 5648L), .Label = c("IJO4WN203F00DQ", "IKTXKCP03HKQ5E"), class = "factor"), ReadLength = c(394L, 429L, 437L, 438L, 459L, 413L)), .Names = c("SampleID", "SeqName", "ReadLength"), row.names = c(NA, 6L), class = "data.frame") 
+0

請從後'dput輸出(頭(FASTA))' –

+0

我已經發布的輸出。 – user3018479

+1

我應該可能要求至少兩個不同的ID,我猜。 –

回答

5

既然你提到ggplot,你有幾種選擇。

# make up some data 
set.seed(1) 
sampleID <- c(">P.SC1Norton-28F",">P.SC4CapeCod-28F") 
df <- data.frame(SampleID=rep(sampleID,each=500), 
       ReadLength=round(c(rnorm(500,350,100),rnorm(500,450,100)))) 

library(ggplot2) 
ggplot(df) + 
    geom_histogram(aes(x=ReadLength, fill=SampleID), 
       colour="grey50", alpha=0.5, position="identity") 

ggplot(df) + 
    geom_histogram(aes(x=ReadLength, fill=SampleID), position="dodge") 

ggplot(df) + 
    geom_histogram(aes(x=ReadLength, fill=SampleID))+ 
    facet_wrap(~SampleID,nrow=2) 

+0

謝謝你這真的有幫助。對於ggplot是這個庫包,我將不得不另外安裝? – user3018479

+0

對。 'install.packages( 「GGPLOT2」)'。 – jlhoward

4

使用add=TRUE參數在第二次調用hist。另外,使用透明的顏色可能會有所幫助。

hist(norton[,3], breaks=bins, main="Histogram of ReadLengths of a set bin size for Cape Cod and Norton", 
    xlab="ReadLengths", col=rgb(1,0,0,.5), border=NA) 
hist(cod[,3], breaks=bins, col=rgb(0,0,1,.5), add=TRUE, border=NA) 

這是使用@ jlhoward的數據進行的更新。需要注意的是軸標籤和標題是凌亂默認:

layout(1:2) 
hist(df$ReadLength[df$SampleID==levels(df$SampleID)[1]], 
    col=rgb(1,0,0,.5), border=NA) 
hist(df$ReadLength[df$SampleID==levels(df$SampleID)[2]], 
    col=rgb(0,0,1,.5), border=NA, add=TRUE) 

enter image description here

hist(df$ReadLength[df$SampleID==levels(df$SampleID)[1]], 
    col=rgb(1,0,0,.5), border=NA) 
hist(df$ReadLength[df$SampleID==levels(df$SampleID)[2]], 
    col=rgb(0,0,1,.5), border=NA) 

enter image description here

+0

謝謝!我得到顏色,但我想要2種顏色。每個地點都有一種顏色。我只是改變第二種顏色的col? – user3018479

+0

是的,你必須更改'col' – Pop