问题描述
|
我正在尝试删除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)