完全无边框的图表绘制

4

我在一张png图像文件上设置了一个透明的散点叠加图,希望我的绘图窗口和pdf输出与我的png尺寸完全相同-962x745。

然而,即使关闭轴、注释和框架,R仍然在图像周围留下一些边框。

这可以通过一个简单的示例来说明:这张图显示了两个点,它们应该位于图形的最外端。但实际上不是:

plot(rbind(c(1,745),c(962,1)),bty ="n",axes=F,frame.plot=F, xaxt='n', ann=FALSE, yaxt='n', asp=745/962)

还有PDF设备:

pdf(width=10.02,height=7.76)
par(mar=rep(0, 4),mai=rep(0, 4), xpd = NA) 
plot(rbind(c(1,745),c(962,1)),bty ="n",axes=F,frame.plot=F, xaxt='n', ann=FALSE, yaxt='n', asp=745/962)
dev.off()
5个回答

6

尝试:

par(mar=rep(0, 4), xpd = NA) 
plot(rbind(c(1,745),c(962,1)),bty ="n",axes=F,frame.plot=F, xaxt='n', ann=FALSE, yaxt='n', asp=745/962)

3
不同的单位,表示相同的事物。我相信“mai”是以英寸为单位,“mar”则以行为单位。 - joran
我尝试了mar选项,但它不起作用:(。是否可能回答https://dev59.com/KYrda4cB1Zd3GeqPHRB1? - user2543622

6

这里有最佳解决方案。只需将轴设置为0即可。

plot(1:10, axes = 0)

迄今为止最简单的解决方案 - Hip Hop Physician

3

你需要设置边距:

par(mar=c(0,0,0,0))

我尝试了“mar”选项,但它不起作用 :(。能否回答一下https://dev59.com/KYrda4cB1Zd3GeqPHRB1? - user2543622

3
您也可以使用网格图形来避免这些默认坐标轴等。
library(jpeg)
library(grid)

d = data.frame(x=rnorm(100, 10), y=rnorm(100, -100))
utils::download.file("http://i.imgur.com/5MexD.jpg", "img.jpg")
img = readJPEG("img.jpg")


w <- convertUnit(unit(ncol(img),"pt"), "in", value=TRUE)
h <- convertUnit(unit(nrow(img),"pt"), "in", value=TRUE)

dev.new(width=w, height=h)    
grid.raster(img, width=unit(1,"npc"), height=unit(1,"npc"))

 v = dataViewport(xData=d$x, yData=d$y)
 grid.points(d$x,d$y, default.units="native", vp=v, 
             gp=gpar(col="white"), pch=8)

enter image description here


Baptiste:有趣的方法,我会尝试一下。 - Inferrator
好的,这个解决方案很完美... 但是这个点命令如何将点转换为网格点 points(xy, col="#ff000012", pch=16,cex=1)... 好的,我明白了,这些参数进入 gpar。 - Inferrator

0

我在这个问题上遇到了很多困难,但box = FALSE对我有用。

例如:


img_03 = na.omit(img_02)

png(file = paste("ndvi",".png",sep=""), bg = "transparent")

plot(img_03,
  legend=FALSE,
  axes = 0,
  frame.plot=0,
  box = FALSE,
  useRaster=0,
  col = hcl.colors(100, "RdYlGn")
)

dev.off()

你好,欢迎来到Stackoverflow :) 如果您能添加一个带有更多上下文的简短运行示例,那将非常棒。 - Jan
img_03 = na.omit(img_02) png(file = paste("ndvi",".png",sep=""), bg = "transparent") plot(img_03,legend=FALSE,axes = 0,frame.plot=0, box = FALSE,useRaster=0,col = hcl.colors(100, "RdYlGn")) dev.off() - Gustavo Leonhard
你也可以编辑你的回答并将其包含在代码标记(`)中。 - Jan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接