Square Normalized Parent Coordinates を使用するビューポートを作成する必要があります。次を参照してください?unit
。
"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")
egのdefault.units
引数はgrid.rect
、プロット関数がネイティブ ( xscale
/ yscale
) ビューポート座標を使用するように強制します。
が四角形の左下のノードを表すjust=c(0, 0)
ことを示します。xlim[1], ylim[1]