我有包含以下列的数据帧DOTS:DOT,X,Y。有10个点。
我想显示所有可能的连接:(a)点1,2,3,4,5之间; (b)5,6,7;和(c)在7,8,9,10之间?
map
预先感谢您的建议。
答案 0 :(得分:2)
我先创建一个数据集:
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)