добавление всех возможных связей между точками в r сюжете - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть точки данных DOTS со следующими столбцами: DOT, X, Y. Есть 10 точек.

Я хочу отобразить все возможные соединения: (а) между точками 1,2,3,4,5; (б) 5,6,7; и (c) от 7,8,9,10?

# what I tried so far

plot(DOTS$X, DOTS$Y, main= "DOTS", xlab= "X", ylab= "Y",
col= "blue", pch = 19, cex = 1, lty = "solid", lwd = 2)

text(DOTS$X, DOTS$Y, labels=DOTS$Dot, cex= 0.7, pos = 3)

lines(DOTS$X,DOTS$Y)

# the last line displays connection from 1 to 2 to 3 etc only

Заранее благодарим вас за ваши предложения.

1 Ответ

0 голосов
/ 06 ноября 2018

Сначала я делаю набор данных:

x <- runif(10, 0, 10)
y <- runif(10, 0, 10)
df <- data.frame(dot = LETTERS[1:10], x = x, y = y)

Я думаю, что можно создать собственную функцию и использовать combn() для генерации всех возможных комбинаций из двух точек. А затем соедините их с segments() соответственно. В пользовательской функции, приведенной ниже, вы можете поместить любые установленные точки и аргументы, например, col, lwd ... и т. Д.

plot(df$x, df$y)
text(df$x, df$y, labels = df$dot, pos = 3)

line.fun <- function(index, ...){
  comb <- combn(index, 2)
  start <- comb[1, ] # starting points
  end <- comb[2, ]   # end points
  segments(df$x[start], df$y[start], df$x[end], df$y[end], ...)
}

line.fun(1:5, col = 2)
line.fun(5:7, col = 3)
line.fun(7:10, col = 4)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...