是否可以捕获用TEXT函数绘制的最后一个字母的坐标?

时间:2012-05-11 14:47:15

标签: r

如何以编程方式捕获示例中“更好”字符串中字母“r”的X坐标?我想捕获该坐标以便动态绘制旁边的箭头。这可以在R中完成吗?它可以在SAS中完成......但有一些困难。

x<-c(1,3)
y<-c(3,3)
plot(y~x, type="c", ylim=c(-1,5), xlim=c(-3,3), col="red") 
abline(h=0,v=0, lty=3)
text(0.3, -2.5, xpd=T, "Group 1 better", adj=0)

#manually draw the arrow
arrows(x0=1.3, x1=3, y0=-2.5, y1=-2.5, length=0.1, code=2,xpd=T)

enter image description here

显而易见的方法是计算字符串中的字母数,并将该数字添加到字符串的X坐标。在大多数情况下,这种方法可能效果很好,但如果文本的大小/样式,角度发生变化,则可能效果不佳。我想知道是否有一种简单的方法来捕获字符串的最后位置。 SAS通过相对于前一个字符串的内部坐标放置箭头来完成它。

我还想知道如何捕获任何其他图形元素的最后一个坐标 - 如果可能的话。 谢谢

1 个答案:

答案 0 :(得分:4)

使用strwidth获取字符串宽度,并为一点空间添加额外字符的宽度:

> arrowlabel = "Group 1 better")
> sw = strwidth(arrowlabel)
> xpos = 0.3 + sw + sw/nchar(arrowlabel)

然后从x = xpos开始绘制箭头。