所以,我正在尝试编写一个函数,该函数将根据输入xlo
,xhi
,ylo
和yhi
绘制矩形图形。 (我对这个功能也有其他的梦想,但是那些似乎没问题,尽管有人认为,最明显的一步。)我希望矩形的长宽比为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,但轴本身看起来仍然很笨。
有人可以帮忙吗?非常感谢!
答案 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)