只是好奇,在 R 中绘图时,可以轻松更改执行代码的顺序以更改绘图上那些“层”的顺序,例如
plot(x, type = "n")
lines(y)
points(x)
Run Code Online (Sandbox Code Playgroud)
拿到x过y。有没有办法以某种方式做到这adhoc一点,例如
plot(x)
lines(y, behind = TRUE) # fictional option behind
Run Code Online (Sandbox Code Playgroud)
虽然 中没有明确的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)

再举一个例子,你可以绘制在不同层系ggplot和melt这样的:
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地图中。
| 归档时间: |
|
| 查看次数: |
1380 次 |
| 最近记录: |