【问题标题】:R: plotting a raster image inside screen() is not workingR:在屏幕()内绘制光栅图像不起作用
【发布时间】:2017-10-13 15:23:48
【问题描述】:

我正在尝试使用 screen 在由两个数字组成的图上绘制一个 rasterLayer 对象

首先 - 我们只有一个图像时的工作案例场景:

library(raster)
f <- system.file("external/test.grd", package="raster")
rst <- raster(f)

plot(rst)
points(180000, 332000, col="red", pch=19)

一切看起来都很好,图像看起来像这样:

但是,当我将屏幕一分为二并尝试仅使用一半的绘图区域绘制相同的图形时,我得到以下结果:

library(raster)
f <- system.file("external/test.grd", package="raster")
rst <- raster(f)
class(rst)

figs <- rbind(c(0, 0.5, 0, 1), # Screen1
              c(0.5, 1, 0, 1)  # Screen2
              )
screenIDs <- split.screen(figs)

screen(screenIDs[1])
plot(rst)
points(180000, 332000, col="red", pch=19)

似乎正确绘制了光栅形状的主图像。但是由于某种原因,它随后会捕获整个绘图区域并在其上添加边界线。之后对情节的后续调用(如points)在整个图形上添加点,而不是停留在它的前半部分。

非常感谢任何如何解决或绕过此问题的想法。

【问题讨论】:

  • 不确定split.screen 的功能,但使用par(mfrow=c(1,2)) 是否提供替代选项?
  • @timfaber par(mfrow=c(1,2)) 确实有效。但不幸的是我有一个复杂的页面布局(这里的两半只是为了重现示例)并且必须使用screen

标签: r plot raster


【解决方案1】:

您可以使用layout 代替split.screen。与您的示例一样,此处演示了一个简单的布局,即只有 1 行的两个相同大小的面板。有关如何获得更复杂的布局,请查看?layout

layout(matrix(c(1,2), 1, 2, byrow = TRUE))
plot(rst)
points(180000, 332000, col="red", pch=19)

plot(1:10,1:10) # a dummy plot to put in the right hand panel

【讨论】:

  • +1。感谢您抽出时间回复。我知道布局,但我真的很想为此使用屏幕。现在正在研究一种使用image() 绘制栅格的不同方法,该方法似乎在屏幕上效果更好,但无法获得正确的分辨率...
猜你喜欢
  • 2015-10-20
  • 1970-01-01
  • 2020-04-08
  • 2020-05-07
  • 1970-01-01
  • 1970-01-01
  • 2015-07-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多