繁体   English   中英

图像光栅R包 - 没有背景和边框和图例的光栅打印

[英]image raster R package - raster printing without background and border and legend

我正在使用光栅功能,如下面的行所示。 我的最后一行产生了一些输出。 该输出有一行表示dimensions : 240, 320, 76800 (nrow, ncol, ncell) 我想重新打印该图片,但只说前200行和前300列。 我怎样才能做到这一点? 下面的第二行显示整个图像

f <- "pictures/image1-1421787394.jpeg"
f
r <- raster(f)
plot(r);
r

============================= UPDATE1

我做了png(filename = '~/x.png');par(mar=rep(0, 4), xpd = TRUE, oma=rep(0, 4),bty='n') ; plot(r,xlim=c(0,200),ylim=c(0,200),legend=FALSE,axes=FALSE); dev.off() png(filename = '~/x.png');par(mar=rep(0, 4), xpd = TRUE, oma=rep(0, 4),bty='n') ; plot(r,xlim=c(0,200),ylim=c(0,200),legend=FALSE,axes=FALSE); dev.off() png(filename = '~/x.png');par(mar=rep(0, 4), xpd = TRUE, oma=rep(0, 4),bty='n') ; plot(r,xlim=c(0,200),ylim=c(0,200),legend=FALSE,axes=FALSE); dev.off()保存裁剪的图像。 我能够摆脱传说,轴和黑匣子。 但问题是保存的图像包含的不仅仅是裁剪部分 - 例如图像周围的白色部分。 我只想保存原件的裁剪部分(保持图像尺寸200 * 200像素)。 请让我知道怎么做?

此外,如何在原始图像中添加与上述裁剪部分对应的红色方块? 我的意思是我想在原始图像的顶部获得一个红色正方形(仅边缘),然后将其(原始图像+正方形)保存为新图像。

我怎么能这样做?

UPDATE2 ++++++++++++++++++++++++++++++++++++++++++++++++

添加可重复的示例来显示我的意思是白色背景

下面的最后一行绘制了裁剪图像。 我希望那个图像是100 * 100,因为我的xlim和ylim是100.但我看到一个白色背景,如下例所示。 (你看不到背景。但如果你在你的机器上运行代码并打开图像,你会看到它)

library(raster)
r <- raster(nrow=240, ncol=320)
values(r) <- 1:ncell(r)
plot(r)
plot(r,xlim=c(0,100),ylim=c(0,100),legend=FALSE,axes=FALSE,frame.plot=F)

在此输入图像描述

你可以通过设置xlimylim来做到这ylim

plot(r,xlim=c(0,299),ylim=c(0,199))

[ 更新 ]要摆脱白色背景,您可以尝试useRaster=F参数:

plot(r,xlim=c(0,100),ylim=c(0,100),legend=FALSE,axes=FALSE,frame.plot=F,useRaster=F)

如果你理解你的问题,你有一个带有dim(r)c(240,320,1)的RasterLayer r,你想要将它裁剪到前200行和300列,然后绘制没有空格的那个。

始终提供示例数据。 在这种情况下,这很容易做到。

library(raster)
r <- raster(nrow=240, ncol=320)
values(r) <- 1:ncell(r)

按行/列裁剪的方法有很多种。 例如,您可以创建一个范围对象并使用它。

e <- extent(r, 1, 200, 1, 300)
rc <- crop(r, e)

另一种方法(对于较小尺寸的栅格)将使用索引和drop = FALSE

rc <- r[1:200, 1:300, drop=FALSE]

要制作地图,您可以使用“情节”或“图像”。 也许图像更符合您的喜好(较少的空白区域,但没有传说)

image(rc)  

使用绘图,您可以在绘图之前设置设备的大小。

dev.new(height=nrow(r), width=ncol(r))
plot(rc, legend=FALSE)

你也可以绘制一个文件,如png,以避免空白; 取决于你如何设置你的'par'ameters,如迈

png('test.png', width=450, height=275)
plot(rc)
dev.off()

处理此问题的其他方法包括在rasterVis包中使用spplot或levelplot

spplot(rc)
library(rasterVis)
levelplot(rc)

获取原始图像上的红色矩形

plot(r)
plot(e, add=TRUE, col='red', lwd=2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM