1

在示例中,如何以编程方式捕获“更好”字符串中字母“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)

在此处输入图像描述

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

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

4

1 回答 1

4

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

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

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

于 2012-05-11T15:02:35.120 回答