Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 连接散点图中的所有点(可能的组合)_R_Plot_Line_Connect - Fatal编程技术网

R 连接散点图中的所有点(可能的组合)

R 连接散点图中的所有点(可能的组合),r,plot,line,connect,R,Plot,Line,Connect,以下是小数据集: myd <- data.frame(PC1 = rnorm(5, 5, 2), PC2 = rnorm (5, 5, 3), label = c("A", "B", "C", "D", "E")) plot(myd$PC1, myd$PC2) text( myd$PC1-0.1, myd$PC2, lab = myd$label) myd以下是基本图解决方案: plot(myd$PC1, myd$PC2) apply(combn(seq_len(nrow(myd)),

以下是小数据集:

myd <- data.frame(PC1 = rnorm(5, 5, 2), 
PC2 = rnorm (5, 5, 3), label = c("A", "B", "C", "D", "E"))
plot(myd$PC1, myd$PC2)
text( myd$PC1-0.1, myd$PC2, lab = myd$label)

myd以下是基本图解决方案:

plot(myd$PC1, myd$PC2)
apply(combn(seq_len(nrow(myd)), 2), 2, 
      function(x) lines(myd[x, ]$PC1, myd[x, ]$PC2))
ps <- data.frame(t(apply(combn(seq_len(nrow(myd)), 2), 2, 
                         function(x) c(myd[x, ]$PC1, myd[x, ]$PC2))))
qplot(myd$PC1, myd$PC2) +
  geom_segment(data = ps, mapping = aes(x = X1, xend = X2, y = X3,yend = X4))

以下是ggplot2解决方案:

plot(myd$PC1, myd$PC2)
apply(combn(seq_len(nrow(myd)), 2), 2, 
      function(x) lines(myd[x, ]$PC1, myd[x, ]$PC2))
ps <- data.frame(t(apply(combn(seq_len(nrow(myd)), 2), 2, 
                         function(x) c(myd[x, ]$PC1, myd[x, ]$PC2))))
qplot(myd$PC1, myd$PC2) +
  geom_segment(data = ps, mapping = aes(x = X1, xend = X2, y = X3,yend = X4))

ps在ggplot中,您可以使用
geom_段
绘制连接线

但是首先你必须用每条连接线的坐标来构造一个数据帧。使用
combn()
查找所有组合:

comb <- combn(nrow(myd), 2)
connections <- data.frame(
  from = myd[comb[1, ], 1:2],
  to   = myd[comb[2, ], 1:3]
)
names(connections) <- c("x1", "y1", "x2", "y2", "label")