在一个图中,不同的曲线,不同的xlim

时间:2016-09-21 04:58:05

标签: r

我想为不同的曲线设置不同的xlim,例如

曲线1:

geom_line(aes(y = y1, colour = "y1"))+  xlim(1,3)

CURVE2:

geom_line(aes(y = y2, colour = "y2"))+  xlim(4,7) 

curve3:

geom_line(aes(y = y3, colour = "y3"))+  xlim(7,10) 

但是在一个数字中,

library("ggplot2")

 x <- 1:10
 y1 <- a+1
 y2 <- a+2
 y3 <- a+3

mm <- data.frame(x,y1,y2,y3)

ggplot(mm, aes(x=x) ) +
  geom_line(aes(y = y1, colour = "y1"))+  
  geom_line(aes(y = y2, colour = "y2"))+  
  geom_line(aes(y = y3, colour = "y3"))+  
  xlab("x") + 
  ylab("y") 

如何实现这个数字?figure

2 个答案:

答案 0 :(得分:0)

您可以根据每个geom所需的限制对数据进行子集化:

x <- 1:10
y1 <- x+1
y2 <- x+2
y3 <- x+3

mm <- data.frame(x,y1,y2,y3)

ggplot() +
  geom_line(data=mm[which(mm$x>=1 & mm$x<=3),], aes(x=x, y = y1, colour = "y1")) +  
  geom_line(data=mm[which(mm$x>=4 & mm$x<=7),], aes(x=x, y = y2, colour = "y2")) +  
  geom_line(data=mm[which(mm$x>=7 & mm$x<=10),], aes(x=x, y = y3, colour = "y3")) +  
  xlab("x") + 
  ylab("y") 

enter image description here

答案 1 :(得分:0)

这个怎么样?

library("ggplot2")

a <- 1:10 #rnorm(10)
x <- 1:10
y1 <- a+1
y2 <- a+2
y3 <- a+3

mm <- data.frame(x,y1,y2,y3)
mm[mm$x > 3, ]$y1 <- NA
mm[mm$x < 4 | mm$x > 7, ]$y2 <- NA
mm[mm$x < 7, ]$y3 <- NA

ggplot(mm, aes(x=x) ) +
  geom_line(aes(y = y1, colour = "y1"))+  
  geom_line(aes(y = y2, colour = "y2"))+  
  geom_line(aes(y = y3, colour = "y3"))+  
  xlab("x") + 
  ylab("y") 

enter image description here