gpt4 book ai didi

r - 在 R 的网格图形中保留纵横比

转载 作者:行者123 更新时间:2023-12-04 11:05:04 25 4
gpt4 key购买 nike

使用低级 graphics 绘制高度比宽度大 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]))

该图有一个很好的功能:保留了纵横比,因此如果我更改绘图窗口的大小,我会得到相同的高宽比例。

如何获得与 grid 相同的结果图形?

最佳答案

您应该创建一个使用 Square Normalized Parent Coordinates 的视口(viewport),
?unit :

"snpc": (...) This is useful for making things which are a proportion of the viewport, but have to be square (or have a fixed aspect ratio).



这是代码:
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")
default.units论据例如 grid.rect强制绘图功能
使用 native ( xscale/ yscale ) 视口(viewport)坐标。 just=c(0, 0)表示 xlim[1], ylim[1]表示左下节点
的矩形。

关于r - 在 R 的网格图形中保留纵横比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23404270/

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