根据距离绘制psp对象上的点

时间:2012-04-19 15:38:38

标签: r plot line spatstat

我有一个距离序列,我想在spatstat中绘制一条线。例如:

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)

我想在lengths的{​​{1}}上使用the.line作为标签,以下列方式(使用Illustrator添加标签):{/ p>

enter image description here

有人知道怎么做吗?非常感谢帮助!

1 个答案:

答案 0 :(得分:1)

text功能允许您将文本添加到现有绘图中。是否可以旋转文本取决于您使用的图形设备,请参阅“{crt”和“srt”上的?par部分。另请参阅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 )