R - 在当前图后面绘制新图层

Ver*_*bal 1 plot r

只是好奇,在 R 中绘图时,可以轻松更改执行代码的顺序以更改绘图上那些“的顺序,例如

plot(x, type = "n")
lines(y)
points(x)
Run Code Online (Sandbox Code Playgroud)

拿到xy。有没有办法以某种方式做到这adhoc一点,例如

plot(x)
lines(y, behind = TRUE) # fictional option behind
Run Code Online (Sandbox Code Playgroud)

Hac*_*k-R 5

虽然 中没有明确的behind选项或图层plot,但叠加两个图的简单方法可能是使用 中的add = TRUE选项plot。下面是一个人工数据的例子:

# Load sp package for creating artificial data
library(sp)

# Create sample town points
towns <- data.frame(lon = sample(100), lat = sample(100))
towns <- SpatialPoints(towns)

# Create sample polygon grid
grd <- GridTopology(c(1,1), c(10,10), c(10,10))
polys <- as.SpatialPolygons.GridTopology(grd)

# Plot polygons
plot(polys)

# Add towns (in red colour)
plot(towns, add = TRUE, col = 'red')
Run Code Online (Sandbox Code Playgroud)

第一个例子

再举一个例子,你可以绘制在不同层系ggplotmelt这样的:

a <- c(3, 6, 16, 17, 11, 21)    
b <- c(0.3, 2.3, 9, 9, 5 ,12)
c <- c(3, 7, 9, 7, 6, 10)
dat <- data.frame(a=a,b=b,c=c)
dat <- melt(dat)
Run Code Online (Sandbox Code Playgroud)

向我们的数据框中添加一个显式的 'x' 变量:

dat$x <- rep(1:6,times=3)
Run Code Online (Sandbox Code Playgroud)

然后只需绘制图形:

ggplot(dat,aes(x=x,y=value)) + 
    geom_line(aes(colour=variable)) + 
    scale_colour_manual(values=colours) + 
    labs(x="time[h]",y="a",colour="") + 
    opts(title="bla")
Run Code Online (Sandbox Code Playgroud)

最后,在其他包中明确支持图层,例如在PBSmapping地图中。