宽高比绘图框R

时间:2015-12-30 05:12:47

标签: r plot aspect-ratio axes

所以,我正在尝试编写一个函数,该函数将根据输入xloxhiyloyhi绘制矩形图形。 (我对这个功能也有其他的梦想,但是那些似乎没问题,尽管有人认为,最明显的一步。)我希望矩形的长宽比为1,这没关系,但是我d真的很像周围的轴也有1的纵横比。我试图给矩形一个10%的余量。我选择任意值只是为了说明我的观点;这些应该由用户传递。我试图完成这个:

xlo = 100
xhi = 700
ylo = 200
yhi = 1000
plot.new()
xmarg = 0.1*(xhi-xlo)
ymarg = 0.1*(yhi-ylo)
my.x.lim = c((xlo - xmarg), (xhi + xmarg))
my.y.lim = c((ylo - ymarg), (yhi + ymarg))
plot(my.x.lim, my.y.lim, type="n", xlab = '', ylab = '', asp = 1)
rect(xlo, ylo, xhi, yhi, lty = 2)

如上所述,我可以使矩形本身的纵横比为1,但轴本身看起来仍然很笨。

enter image description here

有人可以帮忙吗?非常感谢!

1 个答案:

答案 0 :(得分:0)

这个怎么样:

xlo = 100
xhi = 700
ylo = 200
yhi = 1000
xmarg = 0.1*(xhi-xlo)
ymarg = 0.1*(yhi-ylo)
my.x.lim = c((xlo - xmarg), (xhi + xmarg))
my.y.lim = c((ylo - ymarg), (yhi + ymarg))

devMin <- min(dev.size('cm'))
whRatio <- (yhi - ylo) / (xhi - xlo)

if(whRatio < 1){
  wid <- devMin
  hei <- wid * whRatio
}else{
  hei <- devMin
  wid <- hei / whRatio
}

layout(matrix(1), widths=lcm(wid), heights=lcm(hei))
par(xaxs='i', yaxs='i')
plot(xlo, ylo, xlim=my.x.lim, ylim=my.y.lim, type="n", xlab = '', ylab = '', asp = 1)
rect(xlo, ylo, xhi, yhi, lty = 2)