首页 > 解决方案 > Base R 获取光栅图像以填充整个绘图区域

问题描述

我正在尝试使用 base R 来绘制一个点覆盖在顶部的图像,但该图像并没有占据整个绘图区域。如何确保图像利用整个绘图区域(本质上使其更大),同时仍保持由 提供的空间边界points()?例如:

library(EBImage)
library(magrittr)

url <- "https://upload.wikimedia.org/wikipedia/en/7/7d/Lenna_%28test_image%29.png"

img <- EBImage::readImage(url)

if (Sys.info()[["sysname"]] == "Linux") {
  img <- EBImage::rotate(img, 180) %>% 
    EBImage::flop(.)
}

res = dim(img)[1:2]
par(bg = 'grey')
plot(1,1,xlim=c(0,res[1]),ylim=c(res[2],0),asp=1,type='n',xaxs='i',yaxs='i',
     xaxt='n',yaxt='n',xlab='',ylab='',bty='n')
graphics::rasterImage(img,1,1,res[1],res[2])

points(266,266, pch = 20, cex = 0.75, col="red")
points(329, 266, pch = 20, cex = 0.75, col="red")
points(315, 318, pch = 20, cex = 0.75, col="red")

结果是这样的图像:

在此处输入图像描述

理想情况下,我想让图像填充整个绘图区域(灰色)。

标签: r

解决方案


默认情况下,R 允许在图形区域周围留出一定的边距,以允许标签、轴和注释。默认值为 c(5, 4, 4, 2) + 0.1。

要更改这些边距,请执行以下操作:

par(bg = 'grey', mar=c(0,0,0,0))

在此处输入图像描述


推荐阅读