我想为不同的曲线设置不同的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
答案 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")
答案 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")