【问题标题】:How to plot multiple SpatialLines on the same plot: Error in plot.new() : figure margins too large如何在同一个图上绘制多个 SpatialLines:plot.new() 中的错误:图边距太大
【发布时间】:2015-01-19 14:31:15
【问题描述】:

我需要将 SpatialLines 对象旋转 90 度和 180 度,然后用旋转的 SpatialLines 对象绘制原始 SpatialLines 对象。

然而,绘图功能提供了这个错误:

plot.new() 中的错误:图边距太大

我正在使用 RStudio。我尝试重新启动 R Session,重新启动 RStudio 并通过转到 Plots->Zoom Plot 手动缩小绘图...但这无助于解决问题。

library(sp)
library(maptools)

x <- c(1,5,4,8)
y <- c(1,3,4,5)
xy <- cbind(x,y)
xy.sp = sp::SpatialPoints(xy)
spl <- sp::SpatialLines(list(Lines(Line(xy.sp), ID=i)))

# Rotation of a SpatialLines object
spl90 <- maptools::elide(spl, rotate=90, center=apply(bbox(spl), 1, mean))
spl180 <- maptools::elide(spl, rotate=180, center=apply(bbox(spl), 1, mean))

plot(spl)
plot(spl90)
plot(spl180)

【问题讨论】:

  • 在 RStudio 0.98 上使用 R 3.1、sp 1.0 和 maptools 0.8-29 没有问题。这三个图中的哪一个会产生错误?如果将x11() 放在绘图命令之前会发生什么?
  • @koekenbakker:谢谢!在 plot 命令之前添加 x11() 解决了问题。

标签: r plot spatial


【解决方案1】:

我有时也会遇到这个错误,我最大化我的 X11 绘图窗口并且它消失了(虽然我不经常使用 RStudio)。即使在默认尺寸查看器中,您提供的代码对我来说也能正常工作。这段代码虽然产生了 3 个图。您可以使用par 中的参数new 将它们放在同一个图上

plot(spl)
par(new=TRUE)
plot(spl90)
par(new=TRUE)
plot(spl180)
par(new=FALSE)

我会尝试写入文件,看看是否可行。

【讨论】:

    猜你喜欢
    • 2015-10-08
    • 2011-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多