image - 创建没有任何边距的 R 热图

标签 image r plot

我正在尝试做一些表面上很简单的事情:创建一个热图(即 2D 直方图)图像,具有指定的逐像素尺寸 (3600x3600),没有边距或轴标签无论如何

我可以使用 hist2d 函数成功创建数据矩阵。但是,当我使用以下代码进行绘图时,我得到的图像文件确实是 3600x3600,但实际上包括 x 轴和 y 轴刻度线以及边缘上的一些空白。恼人的是,这个空白不是各向同性的——不同的边有不同的数量——所以我不能只是把初始图像放大一点,读入 PhotoShop,然后将它裁剪到 3600x3600 以便只包含情节面积像素(虽然这会很费力)。

par(mar=c(0,0,0,0)) # this *should* eliminate all margins, leaving only the plot area... right?
png("filename.png", w=3600, h=3600)
image(my_matrix, col=heat.colors(16))
dev.off()

奇怪的是,如果我只是在 Quartz 窗口中绘制图像(我使用的是 MacBook Pro,仅供引用),这些标签和空格不会出现:

image(my_matrix, col=heat.colors(16)) # opens new window that looks perfect!

这会工作得很好,但没有办法(据我所知)以像素为单位指定此图的大小,只能以英寸(通过 pin)为单位。所以我不能只保存这个绘图窗口来获得我想要的精确 PNG。

我已经在这上面花了好几天了,但一无所获。有什么帮助吗? par(mar) 参数与某些绘图“设备”或其他东西的交互方式是否有些奇怪?...

最佳答案

如果我在设备激活后 调用 par,它就会工作(同时设置 axes = FALSE 以摆脱轴:

png("~/Desktop/so/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=27)
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()

enter image description here

显然,我在此示例中使用了较小的图像尺寸。此示例代码来自 ?image

关于image - 创建没有任何边距的 R 热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7616556/

相关文章:

image - 如何从 -captureStillImageAsynchronouslyFromConnection :completionHandler:? 获得的 CMSampleBuffer 获取 NSImage

r - 如果为 TRUE,则变量名称

r - R中的列向量到矩阵

python - matplotlib 轴 ('tight' )不起作用?

python - 如何获取所有子图上的标签和轴标题(python)

css - Html 100% 标题响应宽度

javascript - 等待图像在 JavaScript 中加载

image - 如何在 flutter 中以 base64 显示 pdf?

r - ricles 包中的knitr::include_graphics 不起作用

r - R中库克距离图上的重叠数值