【问题标题】:how to plot multiple polygon plots in R?如何在 R 中绘制多个多边形图?
【发布时间】:2015-11-04 14:12:06
【问题描述】:

我正在使用 R 绘制多边形

yy<-c(1217,2343,3255,2129)
xx<-c(61587690.5,61588253.5,61587797.5,61587234.5)
polygon(xx, yy, col="gray", border = "red")

但我想在同一张图表中添加 100000 个多边形图。如何将所有内容添加到一张图表中。



【问题讨论】:

标签: r polygon


【解决方案1】:

这是一个使用坐标列表的示例。它将所有多边形绘制在同一个图中(我把它们的可识别性问题留给你...)

#generate some data
set.seed(123)
n=10
#each 'polygon' is inside a list with xx and yy coordinates
dat <- lapply(1:n,function(x){
  res <- list(xx=c(1,2,3,2)+rnorm(4),
              yy=c(1,2,3,2)+rnorm(4))
  return(res)
})

#create empty plot
plot(0:5,0:5,type='n')
#add polygons
lapply(dat,function(x){polygon(x$xx,x$yy,col="gray",border="red")})

【讨论】:

  • 但上面的情节没有完全打印出来。我需要设置 x 和 y 轴限制吗?
  • 是的。这是一个基于模拟数据的示例。 @logicstar
  • @jogo 我并不是要“隐藏 forloop”,我的意思是提供可扩展的代码和可能的数据结构示例(因为 OP 想要绘制很多多边形)。在这里也可以使用 for 循环。
  • 为了完整起见,这里有一个示例,说明@jogo 建议的“for 循环”如何使用@Heroka 提供的示例数据。只需将lapply 开头的命令替换为以下行:for (i in 1:n) polygon(unlist(dat[[i]]$xx,dat[[i]]$yy),col="gray",border="red")
【解决方案2】:

对于 2 个多边形:

yy<-c(1217,2343,3255,2129)
xx<-c(61587690.5,61588253.5,61587797.5,61587234.5)
plot(xx,yy, type='n')
# plot(0,0, type='n', xlim=c(-5, 5), ylim=c(-200, 100)) # an other plot region
polygon(xx, yy, col="gray", border = "red")
xx <- xx+500
yy <- yy+500
polygon(xx, yy, col="gray", border = "red")

【讨论】:

  • 这对于 100000 个多边形是不可行的。
  • 理论上可以在 for 循环中完成。但我不知道这是否是预期的结果。
  • @jogo 对我来说没问题,但我发现 IInd 多边形不完全可见。我是否需要设置任何 x 限制或/和 y 限制。
  • 是的,绘图区域是根据plot() 的参数定义的。阅读文档。 plot(0,0, xlim=c(-5, 5), ylim=c(-200, 100))
猜你喜欢
  • 2015-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-15
  • 1970-01-01
  • 2018-08-31
  • 1970-01-01
  • 2016-01-31
相关资源
最近更新 更多