由于它的性质,它可能是独一无二的。
所以我有一个情节(特别是它是一个经典的MultiDimensional Scaling图)。通常情况下,我在R
中导入了一个数据框,但我会在这里使用随机生成的数据,因此这是获取MDS
的脚本:
a<-data.frame(replicate(10,sample(0:7,300,rep=TRUE)))
d <- dist(a)
fit <- cmdscale(d,eig=TRUE, k=2)
fit
x <- fit$points[,1]
y <- fit$points[,2]
plot(x, y, xlab="PC1", ylab="PC2",main="Metric MDS", type="n")
text(x, y, labels = row.names(a), cex=.7)
然后我想在所有点之间画线。我做得有点尴尬:
myd<-data.frame(x,y,labels=row.names(a))
plot(myd$x, myd$y)
apply(combn(seq_len(nrow(myd)), 2), 2,
function(x) lines(myd[x, ]$x, myd[x, ]$y))
然后我用另一组数据创建了一个简单的三维散点图:
b<-data.frame(replicate(3,sample(0:30,300,rep=TRUE)))
plot3d(b$X1,b$X2,b$X3)
&安培;得到熟悉的3D scatter-plot
,它与MDS图的点数相同 - 基本上3D scatter-plot
的每个点都对应MDS plot
上的一个点。
我的问题有两部分:
a)在我绘制MDS图上的线段的部分。有没有办法指定何时绘制线条的阈值,即2点之间的欧氏距离是否低于我偏好的指定值?
b)如何在三维散点图中的相应点之间传递或模拟连接MDS图中各点的线段?
注意:的
我不能通过逐个加入成对点来手动执行此操作,因为这需要很长时间 所以我需要一种方法来告诉R在2个不同的坐标集之间建立对应关系(一个来自MDS图),另一个来自数据框,我从中制作了三维散点图。当然,我需要告诉R保留2个点(即线段长度)之间的“距离”属性作为不同的属性,例如线条颜色或粗细以便在三维散点图中有意义,因为否则它不会有任何意义。