gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 22:06:32 25 4
gpt4 key购买 nike

我正在尝试做一些表面上很简单的事情:创建一个热图(即 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com