2012-04-19 4 views
0

У меня есть последовательность расстояний, в которой я хотел бы построить линию в spartstat. Пример:Точки на объекте 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) 

Я хотел бы построить lengths на вершине the.line использованием seqs$name в качестве меток в следующим образом (метки дополненной Illustrator):

enter image description here

ли кто-нибудь знает, как это сделать ? Помощь очень ценится!

ответ

1

Функция text позволит вам добавить текст к существующему сюжету. Независимо от того, можете ли вы повернуть текст или нет, зависит от используемого графического устройства, см. Разделы ?par «crt» и «srt». Также см. Аргумент 'adj' для text для того, как получить текст над строкой, а не затенять линию.

Все это предполагает, что построение выполняется в базовой графике.

Следующие работал для меня на окнах (с использованием 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 построить и рассчитать свои довольно сложные данные, таким образом, построение графика должно выполняться в окне spartstat (owin). Кроме того, я не знаю координат моего текста. Только расстояние вдоль линии. – Mikko

+0

Я только что запустил ваш код выше (через график), затем использовал функцию «локатор» и нажал на концы строки, а результаты совпали с вашей переменной «x» и «y» (с небольшой ошибкой от моего нажатия), поэтому он выглядит как сюжет в базовой графике и не делает ничего интересного с координатами. Поиск координат, заданных x и y, и расстояние вдоль линии - это алгебра, нахождение правильного угла - алгебра и тригг, то просто используйте текстовую функцию, как указано выше. –

+0

Отлично. Благодаря! – Mikko

Смежные вопросы