2015-07-20 70 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