2012-04-19 27 views
0

我有一段距离序列,我想用spatstat绘制一条线。例如:根据距离在psp对象上绘制点

library(spatstat) 

x <- c(0.3, 5) 
y <- c(3, 1.2) 

range.x <- c(0, max(x)+0.2) 
range.y <- c(0, max(y)+0.2) 

owin <- owin(range.x, range.y) 
the.line <- psp(x0 = x[1],x1 = x[2],y0 = y[1],y1 = y[2], window = owin) 

plot(the.line)  

seqs <- data.frame(name = seq(1,7), distance = c(0.12, 0.3, 0.45, 0.5, 0.7, 0.89, 0.95)) 
lengths <- seqs$distance*lengths.psp(the.line) 

我想用seqs$name如在下列方式(添加插图标签)标签上的the.line上图lengths

enter image description here

会有人知道如何做到这一点?非常感谢帮助!

回答

1

text函数将允许您将文本添加到现有的情节。无论是否可以旋转文本取决于您正在使用的图形设备,请参阅?par关于'crt'和'srt'的章节。另请参阅text的'adj'参数,了解如何获取文本上方的文本而不是模糊文本行。

这一切都假定绘图是在基本图形中完成的。

以下为我工作在Windows上运行上面的代码后(使用默认的Windows图形设备):

x.new <- seqs$distance*x[2] + (1-seqs$distance)*x[1] 
y.new <- seqs$distance*y[2] + (1-seqs$distance)*y[1] 

tmp.x <- grconvertX(x, to='inches') 
tmp.y <- grconvertY(y, to='inches') 
theta <- atan2(diff(tmp.y),diff(tmp.x))*180/pi 

text(x.new, y.new, seqs$name, adj=c(0,0), srt=theta) 
+0

嗯......我用spatstat绘图并计算我相当复杂的数据,所以密谋需要在spatstat窗口(owin)上完成。此外我不知道我的文本的坐标。只有沿线的距离。 – Mikko 2012-04-20 12:21:18

+0

我刚刚运行了上面的代码(通过图),然后使用'locator'函数并单击行的末尾,结果与您的'x'和'y'变量匹配(点击时出现一点错误),所以它看起来像是基本图形中的图形,并且对坐标不起任何作用。找到给定x和y的坐标以及沿着直线的距离是代数,找到正确的角度是代数和trig,然后使用上面的文本函数。 – 2012-04-21 17:33:26

+0

完美。谢谢! – Mikko 2012-04-23 13:15:58