0

我有一个距离序列,我想在 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基础上进行绘图(the.line使用Illustrator 添加的标签):seqs$name

在此处输入图像描述

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

4

1 回答 1

1

text功能将允许您向现有绘图添加文本。是否可以旋转文本取决于您使用的图形设备,请参阅?par“crt”和“srt”部分。另请参阅 'adj' 参数以text了解如何将文本置于行上方而不是遮挡行。

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

运行上面的代码后,以下内容在 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 )
于 2012-04-19T16:01:29.833 回答