基于数据的绘图中某些点之间的线?(附R)
我已经做了我的研究和谷歌搜索,但还没有找到解决以下问题的办法。我经常在这个论坛上找到与R相关问题的解决方案,所以我想尝试一下,希望有人能提出一些建议。我需要它来写博士论文;任何人的代码或建议,我将使用自然会得到承认和信任 所以:我需要在R(也欢迎基于SPSS的解决方案)中绘制线/段来连接图中的点(特别是多维缩放),但不是在所有点之间,仅表示至少有一个数据项共享的属性/变量的属性/变量-线条的放置应基于相关绘图基于自身的数据。让我解释一下;下面是一些带有虚拟变量的虚构数据,其中“1”表示该项具有以下属性:基于数据的绘图中某些点之间的线?(附R),r,graph,plot,lines,R,Graph,Plot,Lines,我已经做了我的研究和谷歌搜索,但还没有找到解决以下问题的办法。我经常在这个论坛上找到与R相关问题的解决方案,所以我想尝试一下,希望有人能提出一些建议。我需要它来写博士论文;任何人的代码或建议,我将使用自然会得到承认和信任 所以:我需要在R(也欢迎基于SPSS的解决方案)中绘制线/段来连接图中的点(特别是多维缩放),但不是在所有点之间,仅表示至少有一个数据项共享的属性/变量的属性/变量-线条的放置应基于相关绘图基于自身的数据。让我解释一下;下面是一些带有虚拟变量的虚构数据,其中“1”表示该项具有以
"properties"
a b c
"items" ---------
tree | 1 1 0
house | 0 1 1
hut | 0 1 1
book | 1 0 0
该图为多维比例图(距离被解释为差异)。这就是逻辑:
- 在a和B之间有一行,因为在a中至少有一个项/变量(“树”) 具有这两个属性的数据李>
- B和C之间有一条线,因为数据中至少有一项(“房屋”和“小屋”)同时具有两种属性李>
- 有一个项目(“书籍”)只有一个属性(A),因此它不会影响行的放置
- 重要的是,A和C之间没有一行,因为数据中没有同时具有这两个属性的项
A B C
item1 1 1 1
item2 1 1 0
item3 0 1 1
相反,A、B和B、C应该通过一条线连接,但A和C之间的线是可容许的,因为它们已经间接连接(通过B)。这可以通过关联图来实现吗?如果使用图,并创建表中的二部图的投影,这将非常容易。例如
library(igraph)
## Some example data
mat <- " properties
items a b c
tree 1 1 0
house 0 1 1
hut 0 1 1
book 1 0 0
"
tab <- read.table(textConnection(mat), skip=1,
header=TRUE, row.names=1)
## Create a bipartite graph
graph <- graph.incidence(as.matrix(tab))
## Project the bipartite graph
proj <- bipartite.projection(graph)
## Plot one of the projections, the one you need
## happens to be the second one
plot(proj$proj2)
## Minimum spanning tree of the projection
plot(minimum.spanning.tree(proj$proj2))
库(igraph)
##一些示例数据
mat如果您使用图,并创建表中的二部图的投影,这将非常容易。例如
library(igraph)
## Some example data
mat <- " properties
items a b c
tree 1 1 0
house 0 1 1
hut 0 1 1
book 1 0 0
"
tab <- read.table(textConnection(mat), skip=1,
header=TRUE, row.names=1)
## Create a bipartite graph
graph <- graph.incidence(as.matrix(tab))
## Project the bipartite graph
proj <- bipartite.projection(graph)
## Plot one of the projections, the one you need
## happens to be the second one
plot(proj$proj2)
## Minimum spanning tree of the projection
plot(minimum.spanning.tree(proj$proj2))
库(igraph)
##一些示例数据
mat也许你需要将tab强制为一个矩阵。graph@agstudy:的确,谢谢,我使用的是igraph的开发版本,它也允许数据帧。修好了,不客气。。igraph
软件包中的出色工作。我是一个伟大的球迷,即使我没有机会在专业项目中使用它。你知道使用这个软件包的专业应用程序吗?我不知道你所说的专业应用程序是什么意思,我想GPL可能会限制商业软件的使用。但是有很多研究论文在使用它,而这正是创建它的目的。谢谢你的有用建议!(我没有意识到在提问后可以编辑该问题;因此我删除了评论,并在问题本身添加了保守的必要性)也许你需要将tab强制设置为矩阵。graph@agstudy:确实,谢谢,我使用的是IGRAPHE的开发版本,它也允许数据帧。修好了,不客气。。igraph
软件包中的出色工作。我是一个伟大的球迷,即使我没有机会在专业项目中使用它。你知道使用这个软件包的专业应用程序吗?我不知道你所说的专业应用程序是什么意思,我想GPL可能会限制商业软件的使用。但是有很多研究论文在使用它,而这正是创建它的目的。谢谢你的有用建议!(我没有意识到在提问后可以编辑问题;因此我删除了评论,并在问题本身添加了保守的必要性)关于编辑:那么你想要图的最小生成树?(有关最小生成树,请参见维基百科。)特定的生成树?或者任何生成树?从我现在读到的(感谢您的参考),似乎我需要一个最小生成树,以保持线的总长度/重量最小(排除多余的线)。关于欧几里德MST,边缘权重等于欧几里德距离,但事实并非如此,因为MDS图已经显示了欧几里德距离,它传达了所有点之间的差异,而不仅仅是连接点之间的差异。(来自人文学科,这对我来说是很新的;我使用过f.ex聚类分析,但我从来不知道它是基于MST的)因此,如果需要MST,只需在投影上调用minimum.span.tree()
。我已经更新了我的答案。@GaborCsardi:非常感谢!我没有意识到这有那么简单;我一到R就要尝试实现这个。关于编辑:你想要一个图的最小生成树吗?(有关最小生成树,请参见维基百科。)特定的生成树?或者任何生成树?从我现在读到的(感谢r