【发布时间】:2011-11-28 19:34:03
【问题描述】:
我正在尝试做一些表面上简单的事情:创建一个热图(即 2D 直方图)图像,具有指定的逐像素尺寸 (3600x3600),没有边距或轴标签随便。 p>
我可以使用 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!
这可以正常工作,但没有办法(据我所知)以 pixels 为单位指定此绘图的大小,仅以 inches 为单位(通过 pin)。所以我不能只保存这个绘图窗口来获得我想要的 exact PNG。
我已经在这上面花了几天时间,但一无所获。有什么帮助吗? par(mar) 参数与某些绘图“设备”或其他东西的交互方式是否有些奇怪?...
【问题讨论】:
-
我们在这里就热图和其他显示相关结构的策略进行了很好的讨论:stackoverflow.com/questions/7597216/…