R 无法删除绘图的一个像素宽的白色边距(底部和右侧)

R 无法删除绘图的一个像素宽的白色边距(底部和右侧),r,plot,R,Plot,我正在尝试使用image()打印并保存矩阵,没有轴、标签、边距等。我需要的只是纯彩色图像,其中单元格的数量将与保存的打印上的像素数量相对应。在R图形设备上看起来不错,但如果我将绘图保存到文件中,则在图像的底部和右侧始终保留一个像素宽的白色边距。我尝试了所有的格式,但没有成功。我正在使用GIMP进行图像处理 示例代码: png("heatmap.png",w=400,h=400) par(mar = c(0,0,0,0)) require(grDevices) # for colours x &l

我正在尝试使用
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()
png(“heatmap.png”,w=400,h=400)
par(mar=c(0,0,0,0))
需要(GR设备)#颜色

x通过使用参数
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()
png(“heatmap.png”,w=400,h=400)
par(mar=c(0,0,0,0))
需要(GR设备)#颜色

我继续假设你在Windows上<默认情况下,code>png
似乎使用
WindowsGDI
设备进行打印。通过设置
type=“cario”
,改用cairographics

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


边界消失了。有关
WindowsGDI
设备出现这种情况的原因的答案可能在帮助页上找到…

似乎这是值得报告的bug。@Thomas,但bug可能在
WindowsGDI
设备驱动程序中?(我假设你的意思是为R core)+1提交错误报告-此选项更普遍适用-
useRaster=TRUE
选项要求“网格必须是规则的…”。@marcinebox谢谢,但WindowsGDI设备的行为还是很奇怪。