尝试删除所有边距,以使绘图区域包含整个图形

问题描述

| 我正在尝试删除R中图形的所有边距和“图形区域”,以使图形区域包含整个图形设备。我以为下面的代码可以做到,但是我的情节周围仍然有一个边框(左/底较宽,顶/右较细)。谢谢
par(oma=c(0,0))
par(mar=c(0,0))
par(plt=c(0,1,1))
以为我会加图片显示我的进度。 xaxs和yaxs几乎删除了顶部和右侧的所有边框-左侧和底部仍然有边框。 我脚本的相关部分如下。
png(\"Test.png\",width = 256,height = 256,units = \"px\",pointsize = 6.4,bg = \"black\",res = NA)

par(mar=c(0,0),xaxs=\'i\',yaxs=\'i\')


smoothScatter(lhb$px,lhb$pz,nrpoints=0,xlim=c(-3,3),ylim=c(0,5),main=\"\",xlab=\"\",ylab=\"\",axes=FALSE,colramp=colorRampPalette(c(\"black\",\"#202020\",\"#736AFF\",\"cyan\",\"yellow\",\"#F87431\",\"#FF7F00\",\"red\",\"#7E2217\"))
    )

segments(.83,1.597,.83,3.436,col = par(\"fg\"),lty = par(\"lty\"),lwd = par(\"lwd\"))
segments(-.83,-.83,lwd = par(\"lwd\"))


dev.off()
    

解决方法

一个问题是根本不了解ѭ2的作用。从3英镑起,我们有:
 ‘plt’ A vector of the form ‘c(x1,x2,y1,y2)’ giving the
      coordinates of the plot region as fractions of the current
      figure region.
因此,如果您做
par(plt=c(1,1,1))
,则绘图区域的大小为零,因此这似乎不是可行的方法。这是因为图形区域包含绘图区域。 该图似乎覆盖了整个区域,没有任何空白:
op <- par(mar = rep(0,4))
plot(1:10)
par(op)
它很好地覆盖了它,您看不到轴或盒子: 假设默认值为0外部边距(
oma
)。这是您要找的东西吗? 我们可以看到,如上所述,仅调整绘图边距,我们还更改了
plt
参数作为副作用:
> par(\"plt\")
[1] 0.1173174 0.9399106 0.1457273 0.8828467
> op <- par(mar = rep(0,4))
> par(\"plt\")
[1] 0 1 0 1
> par(op)
> par(\"plt\")
[1] 0.1173174 0.9399106 0.1457273 0.8828467
表示仅设置绘图边距就足以获得涵盖整个设备的绘图/图形区域。 当然,还有一些内部填充可以确保轴的范围比
x
y
坐标中的数据范围稍大。但是你可以用
xaxs
yaxs
控制它---见
?par
更新:正如OP所示,他们正在尝试制作没有利润的图形,我可以提供一个可重现的示例:
set.seed(1)
dat <- matrix(rnorm(100*100),ncol = 100,nrow = 100)

layout(matrix(1:2,ncol = 2))
image(dat)
op <- par(mar = rep(0,4))
image(dat)
par(op)
layout(1)
比较一下: 并仅显示整个绘图区域:     ,尝试将裁剪区域参数\'xpd \'设置为NA(裁剪到设备)。 par(xpd = NA)