如何影响 R 的 plot() 输出与 R 本身或 tikzDevice 的纵横比?

How to influence the aspect ratio of R's plot() output with R itself or tikzDevice?

我不确定这个问题是否与 RtikzDevice.

有关

我只是使用 R 和命令 plot(1)。 生成的 graphic 表现得像矢量图形。它的纵横比取决于显示它的 window 的比例。

我可以在调用 plot() 时显式设置纵横比吗?

xlim 不影响图形输出本身 - 只影响内容(x 轴上的数字)。

也许 tikzDevice 有办法修复纵横比? 我与 tikzDevice 一起使用的脚本如下所示。

#!/usr/bin/R -f

# load the library
library(tikzDevice)

# the output file
tikz('plot.tex')

#
plot(1, xlab='X-Axis', ylab='Y-Axis')
dev.off()

@版主:请加标签'tikzDevice'.

帮助页面 ?plot 包含用于控制宽高比的 asp 参数(更多详细信息在 ?plot.window 页面上)。

我不知道 tikz 设备是否以不同方式处理这个问题(因为绘图的高度和宽度在绘图创建后可能会改变),但开始的地方是尝试类似的东西:

plot(1, asp=1)

然后确保绘图区域的大小与最终文档中的大小相同。

编辑

如果只画1个点,可能看不出画有太大变化,但是可以试试下面命令看看设置asp的效果:

theta <- seq(0,2*pi, length=200)
plot(cos(theta),sin(theta))
plot(cos(theta),sin(theta), asp=1)

对于默认情况下的常规 R 和 Rstudio(至少在我的计算机上),2 个图中存在明显差异。我还没有用 tikz 设备试过这个。

您也可以尝试使用 TeachingDemos 包中的 squishplot 函数(我从未在 tikz 设备上尝试过,但在常规 R 中,它可以作为另一种设置纵横比的方法):

library(TeachingDemos)
op <- squishplot(c(-1,1),c(-1,1), asp=1)
plot(cos(theta),sin(theta))
par(op)