使用R中的locator()向绘图添加箭头

时间:2012-09-19 21:07:58

标签: r plot graphics

是否可以使用定位器添加箭头?我试了试但没有运气......

plot(1:3)
arrows(x0=locator(1), x1=locator(1),
       y0=locator(1), y1=locator(1), code=1)#single headed arrow

2 个答案:

答案 0 :(得分:6)

如果你看一下locator(1)返回的内容,你会明白为什么这甚至不能正常工作:

> locator(1)
$x
[1] 1.365533

$y
[1] 2.25695

所以你将长度为2的列表传递给每个参数。我可能(虽然这不会再现,因此我不会真的在任何分析中愤怒地做到这一点)通过这样做:

> locs <- locator(2)
> locs
$x
[1] 1.265845 1.587567

$y
[1] 2.604642 2.267028

使用locs中保存的数据添加箭头:

with(locs, arrows(x0=x[1], x1=x[2], y0=y[1], y1= y[2], code=1))

答案 1 :(得分:0)

我个人不喜欢在这种情况下使用定位器。 一个非常快速起草的替代方案可能如下。需要注意的是,你可以 总是改变你设计'arrow_pos'的方式

arrow_pos = as.data.frame(matrix(1:2,2,2))
colnames(arrow_pos)<- c("x","y")
with(arrow_pos, arrows(x0=x[1],x1=x[2], y0=y[1],y1=y[2]))

或者,您也可以这样做:

x_s<-c(1,2)
y_s<-c(1,2)
arrow_pos <- as.data.frame(rbind(x_s,y_s))

在这种情况下,您还可以使用直接从您正在绘制的矢量获取数据的命令填充x_s。

V1 = 1:3

作为示例,您可以将它们存储在'arrow_pos'

length(V1); ceiling(mean(V1)); median(V1)