【问题标题】:Plot completely without borders完全无边界地绘制
【发布时间】:2012-02-17 16:44:10
【问题描述】:

我在 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()

【问题讨论】:

    标签: r plot


    【解决方案1】:

    试试:

    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)
    

    【讨论】:

    • @user1216731 我相信不同的单位,同样的事情。 mai 以英寸为单位,mar 以行为单位。
    • 我尝试了 mar 选项,但它不起作用:(。可以回答stackoverflow.com/questions/29828821/…吗?
    【解决方案2】:

    这是最好的解决方案。只需设置轴 = 0

    plot(1:10, axes = 0)
    

    【讨论】:

    • 迄今为止最简单的解决方案
    【解决方案3】:

    您还可以使用grid 图形来避免使用这些默认轴等。

    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)
    

    【讨论】:

    • baptiste:有趣的方法,我会玩的
    • 好的,这个解决方案很完美....但是这个points命令如何转换为网格点points(xy, col="#ff000012", pch=16,cex=1) ...好的,明白了,这些参数进入gpar
    【解决方案4】:

    你必须设置边距:

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

    【讨论】:

    【解决方案5】:

    我在这个问题上苦苦挣扎,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 :) 如果您可以添加一个包含更多上下文的简短运行示例,那就太好了。
    • 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()
    • 您还可以编辑您的答案并包含您所写的内容,同时还可以将其包装成代码记号 (`)
    猜你喜欢
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 2019-08-01
    • 2011-04-10
    • 2014-02-26
    • 1970-01-01
    • 2021-11-22
    • 2013-09-07
    相关资源
    最近更新 更多