2015-07-20 51 views
0

我打算用y軸包裹這個散點圖。例如,如果y軸上升到1000,我想將這個圖分成4個,第一個是y軸從0-250,下一個251-500,下一個501-750,以及最後的751-1000。這種類型的小麪包裹可能嗎?R ggplot方面包裝

library(ggplot2) 

A 
nrow(A) 
# 1000 
ncol(A) 
# 3 
head(A) 
# Track Base Location 
# 1  1 A  1 
# 2  1 C  2 
# 3  1 G  3 
# 4  1 G  4 
# 5  1 A  5 
# 6  1 A  6 

p <- ggplot(data = A, aes(y=Track, x=Location)) + 
    geom_point(aes(colour=Base),shape=15,size=2) 
    print(p) 

這就是我現在所擁有的,正如你所看到的,它看起來並不美觀。 This is what I have right now, as you can see, it doesn't look aesthetically pleasing.

+0

請提供可重複的例子 - 我們將無法重新創建你的代碼,因爲我們沒有'A'。 –

回答

2

你可以 - 你只需要做出一個指標變量,它顯示了小面的每個點應該屬於

(快速預留 - 你已經把你的問題仍然沒有一個重複的例子 - 什麼我們追求的是我們可以複製粘貼到我們終端的東西,但仍然會展示您的問題。例如,在我的回答中,我向您展示了一個可重複的示例,其中A中只有100行,而不是1000,我的間隔與您的不同,但關鍵是您可以將其直接複製粘貼到您的終端,並且您可以輕鬆看到它將如何擴展到您的問題)。

例如

# here's a reproducible example, with 100 data points 
A <- data.frame(Track=1, Location=1:100, Base=factor(sample(c('A', 'T', 'C', 'G'), 100, replace=T))) 

library(ggplot2) 

ggplot(transform(A, panel=cut(Location, seq(0, 100, by=25), include.lowest=T)), 
     aes(x=Track, y=Location)) + 
    geom_point(aes(colour=Base),shape=15,size=2) + 
    facet_wrap(~ panel, scales='free') 

要點:

  • transform(A, panel=...)增加了一個額外的列「面板」到你的數據框(試運行自身看)
  • cut(Location, seq(0, 100, by=25), include.lowest=T)使得表示一個因子,其區間內的各Location這裏的時間間隔是[0, 25], (25,50] (50,75] (75,100]include.lowest確保0包含在第一個時間間隔中)。爲了在你的問題中提到的休息你會做這樣的事情seq(0, 1000, by=250)
  • facet_wrap(~ panel,...)使得每間隔一個方面
  • facet_wrapscales='free'使得它使所有的Y標尺可在每個面板不同(跳過它他們都被繪製在一個共同的規模 - 只是試圖跳過它,你會明白我的意思)。

enter image description here