2012-04-19 31 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