gpt4 book ai didi

r - 试图删除所有边距,以便绘图区域包含整个图形

转载 作者:行者123 更新时间:2023-12-03 23:42:16 27 4
gpt4 key购买 nike

我试图删除 R 中绘图的所有边距和“图形区域”,以便绘图区域包含整个图形设备。我认为下面的代码可以做到,但我的绘图周围仍然有一个边框(左侧/底部较宽,顶部/右侧较薄)。谢谢

par(oma=c(0, 0, 0, 0))
par(mar=c(0, 0, 0, 0))
par(plt=c(0, 1, 0, 1))

以为我会添加一张图片来显示我的进步。 xaxs 和 yaxs 几乎移除了顶部和右侧的所有边框 - 左侧和底部仍然有边框。

R plot

我的脚本的相关部分如下。
png("Test.png", 
width = 256, height = 256,
units = "px", pointsize = 6.4,
bg = "black", res = NA)

par(mar=c(0, 0, 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, 1.597, -.83, 3.436, col = par("fg"), lty = par("lty"), lwd = par("lwd"))
segments(-.83, 3.436, .83, 3.436, col = par("fg"), lty = par("lty"), lwd = par("lwd"))
segments(-.83, 1.597, .83, 1.597, col = par("fg"), lty = par("lty"), lwd = par("lwd"))


dev.off()

最佳答案

一个问题是根本没有得到什么plt做。来自 ?par我们有:

 ‘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, 1)),您的绘图区域的大小为零,所以这似乎不是要走的路。这是因为图形区域包含绘图区域。

这个图似乎覆盖了整个区域,没有任何边距:
op <- par(mar = rep(0, 4))
plot(1:10)
par(op)

它覆盖得很好,你看不到轴或盒子:

full region covered

这假定默认为 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)

这给出了比较:

comparison of default and no margins respectively

并仅显示完整的绘图区域:

full plot region covered

关于r - 试图删除所有边距,以便绘图区域包含整个图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5663888/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com