将线段从绘图转移到另一个绘图,并在不同坐标上使用相应的点

时间:2014-11-27 13:14:45

标签: scatter-plot coordinate-transformation line-segment

由于它的性质,它可能是独一无二的。

所以我有一个情节(特别是它是一个经典的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个点(即线段长度)之间的“距离”属性作为不同的属性,例如线条颜色或粗细以便在三维散点图中有意义,因为否则它不会有任何意义。

0 个答案:

没有答案