将lwd单位转换为用户坐标(R基础图形)?

时间:2012-02-03 18:05:58

标签: r graphics

如何使用lwd代表一些数量?

例如:

plot(NULL, type="n", xlim=c(4,7), ylim=c(1,6), xlab="", ylab="")
points(c(5.25,5.25), c(4,5), type="l", lwd=87)
points(c(5.5,6.5), c(3.5,3.5), type="l", lwd=92)
rect(5,3,5.5,4, col="white")

我希望使用points函数绘制的线条与矩形一样宽/高。我手动找到了上面的值87和92。有没有办法计算这些数量?

编辑: 问题的背景是:我想绘制bezier curves,我希望曲线的粗细代表我的数据。我的第一个想法是使用lwd。我能做得更好吗?

1 个答案:

答案 0 :(得分:3)

lwd是您尝试做的错误工具。实际线宽将相对于用户坐标发生变化,具体取决于缩放图窗口的大小(或保存时的尺寸)。您显然知道rect命令,为什么不使用它?您也可以查看shape包。

- 编辑 -

对于更复杂的形状,我的经验不会超出polygon。有了它,你可以获得Bezier曲线的坐标bc,然后在x = c(bc$x + dx, rev(bc$x - dx), y = c(bc$y + dy, rev(bc$y - dy)周围绘制一个多边形,但我不确定它能找到复杂曲线的效果。

另外,如果您愿意,可以将points(..., type = "l")替换为lines(...)。 (我认为它使我的代码更具可读性。)