图像光栅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()
来保存裁剪后的图像。我能够摆脱图例、轴和黑匣子。但问题是保存的图像包含的不仅仅是裁剪部分——例如图像周围的白色部分。我只想保存原件的裁剪部分(保持图像大小为 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)
您可以通过设置 xlim
和 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 列,然后绘制没有白色的图space。
始终提供示例数据。在这种情况下,这很容易做到。
library(raster)
r <- raster(nrow=240, ncol=320)
values(r) <- 1:ncell(r)
rows/columns 有不同的裁剪方式。例如,您可以创建一个范围对象并使用它。
e <- extent(r, 1, 200, 1, 300)
rc <- crop(r, e)
另一种方法(对于较小的栅格)是使用索引和 drop=FALSE
rc <- r[1:200, 1:300, drop=FALSE]
要制作地图,您可以使用 'plot' 或 'image'。也许图像更合您的喜好(白色较少space,但没有图例)
image(rc)
使用绘图,您可以在绘图前设置设备的大小。
dev.new(height=nrow(r), width=ncol(r))
plot(rc, legend=FALSE)
也可以打印成png等文件,避免出现白色space;取决于您如何设置“参数”,例如 mai
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)
我正在使用如下几行所示的栅格函数。我的最后一行产生了一些输出。该输出有一行内容为 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()
来保存裁剪后的图像。我能够摆脱图例、轴和黑匣子。但问题是保存的图像包含的不仅仅是裁剪部分——例如图像周围的白色部分。我只想保存原件的裁剪部分(保持图像大小为 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)
您可以通过设置 xlim
和 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 列,然后绘制没有白色的图space。
始终提供示例数据。在这种情况下,这很容易做到。
library(raster)
r <- raster(nrow=240, ncol=320)
values(r) <- 1:ncell(r)
rows/columns 有不同的裁剪方式。例如,您可以创建一个范围对象并使用它。
e <- extent(r, 1, 200, 1, 300)
rc <- crop(r, e)
另一种方法(对于较小的栅格)是使用索引和 drop=FALSE
rc <- r[1:200, 1:300, drop=FALSE]
要制作地图,您可以使用 'plot' 或 'image'。也许图像更合您的喜好(白色较少space,但没有图例)
image(rc)
使用绘图,您可以在绘图前设置设备的大小。
dev.new(height=nrow(r), width=ncol(r))
plot(rc, legend=FALSE)
也可以打印成png等文件,避免出现白色space;取决于您如何设置“参数”,例如 mai
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)