在R'中保持纵横比;s网格图形

在R'中保持纵横比;s网格图形,r,plot,r-grid,R,Plot,R Grid,要使用低级graphicspackage工具绘制高度大于其宽度2倍的“交叉”矩形,我称之为: xlim <- c(0, 500) ylim <- c(0, 1000) plot.new() plot.window(xlim, ylim, asp=1) rect(xlim[1], ylim[1], xlim[2], ylim[2]) lines(c(xlim[1], xlim[2]), c(ylim[1], ylim[2])) lines(c(xlim[1], xlim[2]), c(

要使用低级
graphics
package工具绘制高度大于其宽度2倍的“交叉”矩形,我称之为:

xlim <- c(0, 500)
ylim <- c(0, 1000)
plot.new()
plot.window(xlim, ylim, asp=1)
rect(xlim[1], ylim[1], xlim[2], ylim[2])
lines(c(xlim[1], xlim[2]), c(ylim[1], ylim[2]))
lines(c(xlim[1], xlim[2]), c(ylim[2], ylim[1]))

xlim您应该创建一个使用方形标准化父坐标的视口,
参见
?单元

“snpc”
:(…)这对制作成一定比例的东西很有用 但必须是正方形(或具有固定的纵横比)

代码如下:

library('grid')
xlim <- c(0, 500)
ylim <- c(0, 1000)
grid.newpage() # like plot.new()
pushViewport(viewport( # like plot.window()
        x=0.5, y=0.5, # a centered viewport
        width=unit(min(1,diff(xlim)/diff(ylim)), "snpc"), # aspect ratio preserved
        height=unit(min(1,diff(ylim)/diff(xlim)), "snpc"),
        xscale=xlim, # cf. xlim
        yscale=ylim  # cf. ylim
))
# some drawings:
grid.rect(xlim[1], ylim[1], xlim[2], ylim[2], just=c(0, 0), default.units="native")
grid.lines(xlim, ylim, default.units="native")
grid.lines(xlim, rev(ylim), default.units="native")
库(“网格”)
xlim在
ggplot2
(基于
网格
)中,可以使用
coord_fixed()
固定纵横比:

这将固定比率,即使更改图形窗口的大小,比率也将保持不变

我不确定这是否有用,因为您要求的是基于网格的低级解决方案。但我认为它可能还是有用的

library(ggplot2)
ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point() + coord_fixed(ratio = 0.5)