5

我正在尝试使用image()没有轴、标签、边距等来绘制和保存我的矩阵。我需要的只是纯彩色图像,其中单元格的数量将对应于保存的绘图上的像素数。在 R 图形设备上它看起来不错,但是如果我将绘图保存到文件中,那么图像的底部和右侧总是会保留一个像素宽的白色边距。我尝试了所有格式,但没有成功。我正在使用 GIMP 进行图像处理。

示例代码:

png("heatmap.png",w=400,h=400)
par(mar = c(0,0,0,0))
require(grDevices) # for colours
x <- y <- seq(-4*pi, 4*pi, len=400)
r <- sqrt(outer(x^2, y^2, "+"))
image(z = z <- cos(r^2)*exp(-r/6), col=gray((0:32)/32),axes = FALSE)
dev.off()
4

2 回答 2

7

我会继续假设你在 Windows 上。png似乎WindowsGDI默认使用该设备进行绘图。改为使用 cairographics,通过设置type = "cario"...

png("heatmap.png",w=400,h=400 , type="cairo" )

在此处输入图像描述

边界消失。WindowsGDI可能会在grDevices::windows帮助页面上找到有关设备出现这种情况的答案...

于 2013-10-14T09:22:28.187 回答
3

通过使用参数useRaster=TRUE,问题得到解决:

png("heatmap.png",w=400,h=400)
par(mar = c(0,0,0,0))
require(grDevices) # for colours
x <- y <- seq(-4*pi, 4*pi, len=400)
r <- sqrt(outer(x^2, y^2, "+"))
z <- cos(r^2)*exp(-r/6)
image(z, col=gray((0:32)/32), axes=FALSE, useRaster=TRUE)
dev.off()

在此处输入图像描述

于 2013-10-14T09:13:21.690 回答