- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
数据集包括网络矩阵和属性数据框。网络数据集本身有 3 个数据集,我只想处理 PrinFull 数据集以及 PRIN 属性数据。我的数据在下面的这两个链接中上传。我在我的数据集上添加了所有属性。
https://drive.google.com/file/d/1MZCdeAZF0joIQLwVeoVXmKpf7r8IJ2wq/view?usp=sharing https://drive.google.com/file/d/1I96BAUo8TjJMWCWpn_SIhp54snfZ0Bd5/view?usp=sharing我想绘制我的社区检测算法,代码如下,但是我的图很乱而且看不懂。我怎样才能更好地绘制?谁能帮帮我?
load('/content/CISPRINWOSmatrices.RData')
load('/content/CISPRINWOS_attributes.RData')
library("igraphdata")
library("igraph")
library("network")
library("statnet")
library("intergraph")
library("dplyr")
library("stringr")
library("RColorBrewer")
library("sand")
nodePRIN <- data.frame(PRIN)
#nodePRIN
relationsp <- as.matrix(PrinFull)
PRIN_graph = graph_from_adjacency_matrix(relationsp, mode="undirected",weighted = TRUE)
PRIN_graph
# Girvan-newman algorithm
gn.comm <- cluster_edge_betweenness(PRIN_graph)
#How many communities?
unique(gn.comm$membership)
#attach community labels as vertex attribute
V(PRIN_graph)$GN.cluster <- membership(gn.comm)
PRIN_graph
V(PRIN_graph)$Author[V(PRIN_graph)$GN.cluster==69]
# visualizing the result of dividing the network into communities
par(mar=c(0,0,0,0))
colors <- rainbow(max(membership(gn.comm)))
plot(gn.comm, PRIN_graph, vertex.size = 6,
vertex.color=colors[membership(gn.comm)], vertex.label = NA, edge.width = 1)
[![enter image description here][1]][1]
最佳答案
无论您做什么,都无法轻松查看具有 9379 个链接的 2839 个节点。屏幕上没有那么多空间。不过,我有一些建议这可能比仅仅将图表传递到绘图中提供更多的洞察力。
首先,快速浏览一下您的绘图就会发现该图不是由单个连通分量。
COMP = components(PRIN_graph)
table(COMP$membership)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
2696 42 2 4 18 13 2 7 7 2 3 2 2 2
15 16 17 18 19 20 21 22 23 24 25 26 27
2 6 14 3 1 1 1 2 1 3 1 1 1
所以 2696 个节点在一个大组件中,其余 143 个有 26 个小组件。大组件中的2696个节点不堪重负较小的组件和 26 个小组件会造成视觉困惑对于大组件。让我们把 26 个小组件分开。
SC = which(COMP$membership != 1)
SmallComps = induced_subgraph(PRIN_graph, SC)
现在很容易在所有这些小组件上看到社区结构。
SC.gn.comm <- cluster_edge_betweenness(SmallComps)
colors <- rainbow(max(membership(SC.gn.comm)))
plot(SC.gn.comm, SmallComps, vertex.size = 6,
vertex.color=colors[membership(SC.gn.comm)],
vertex.label = NA, edge.width = 1)
大多数情况下,小型组件由单个社区组成,尽管有一些具有某种结构。
这是简单的部分,现在让我们看看主要的部分。
LC = which(COMP$membership == 1)
LargeComp = induced_subgraph(PRIN_graph, LC)
Girvan-Newman 在这个大型组件中产生了 43 个社区
LC.gn.comm <- cluster_edge_betweenness(LargeComp)
max(LC.gn.comm$membership)
[1] 43
但简单地绘制仍然会留下一团糟。
par(mar=c(0,0,0,0))
colors <- rainbow(max(membership(LC.gn.comm)))
set.seed(1234)
plot(LC.gn.comm, LargeComp, vertex.size = 6,
vertex.color=colors[membership(LC.gn.comm)],
vertex.label = NA, edge.width = 1)
我将建议两种方法来改善此图的外观:
社区分离和社区承包。
分离社区
基于 this previous answer ,我们可以将同一社区组中的顶点放在一起并制作不同的社区之间的距离更远。
LC_Grouped = LargeComp
E(LC_Grouped)$weight = 1
for(i in unique(membership(LC.gn.comm))) {
GroupV = which(membership(LC.gn.comm) == i)
LC_Grouped = add_edges(LC_Grouped, combn(GroupV, 2), attr=list(weight=6))
}
set.seed(1234)
LO = layout_with_fr(LC_Grouped)
colors <- rainbow(max(membership(LC.gn.comm)))
par(mar=c(0,0,0,0))
plot(LC.gn.comm, LargeComp, layout=LO,
vertex.size = 6,
vertex.color=colors[membership(LC.gn.comm)],
vertex.label = NA, edge.width = 1)
这让社区更好地脱颖而出,但仍然相当困难查看关系。所以另一种选择是
与社区签约
只需为每个社区绘制一个节点。在这里,我将每个区域社区顶点与该社区的成员数量成正比然后我根据顶点的度数使用粗分组为顶点着色。
GN.Comm = simplify(contract(LargeComp, membership(LC.gn.comm)))
D = unname(degree(GN.Comm))
set.seed(1234)
par(mar=c(0,0,0,0))
plot(GN.Comm, vertex.size=sqrt(sizes(LC.gn.comm)),
vertex.label=1:43, vertex.cex = 0.8,
vertex.color=round(log(D))+1)
您可以看到,有些社区几乎没有与其他社区建立联系,而有些则是连接得很好。这些可视化都不是完美的,但我希望它们可以提供一些关于结构和关系的见解。
关于r - 可视化将网络划分为社区的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62553280/
如何使用 Facebook API 查找 Facebook 网址是社区网址或个人资料网址 例如 http://www.facebook.com/adelphi.panthers http://www.
我正在寻找 Erlang 问答平台/社区进行讨论和澄清。我现在使用 StackOverflow 和 erlangforums.com。两个社区都很棒。有没有其他的问答平台? 我检查了以下维护 Erla
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 4 年前。 Improve this qu
我可以使用下面的代码来生成和绘制社区: wc <- walktrap.community(subgraph) modularity(wc) membership(wc) layout <-la
我对 Chef 有点陌生,并且已经完成了教程,但我开始认为我不是错的人: 我正在尝试在 CentOS 7.2 上安装 Java。它无法安装(显然) - 但将 tarball 提取到正确的位置,但添加了
我做了很多 XSLT 编程。我也做 Java、PL/SQL、JavaScript 和其他一些。我可以通过网络轻松找到 Java 和 JavaScript 程序员社区。 PL/SQL 稍微难一点,但介于
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 7 年前。 Improve this qu
我想了解带有实际信息的 python 资源 - 新闻、文章、论坛(英语/美国 - 讲)。我现在学习了python(我已经有很好的c/c++知识),我需要的不仅仅是官方文档/教程。我想了解Python编
我需要了解 Postgresql。我正在尝试分支一个依赖于 Oracle 的应用程序框架来使用 Postgresql。我可以通过网络轻松找到 Java 和 JavaScript 程序员社区。 Orac
我正在使用 AgGrid 社区版本和 React。我试图在标题中的每一列上显示一个复选框。选择时应突出显示所选列下的单元格。此外,我需要记录所选列的更改。 我的columnDefs是基于后端数据构建的
有点好奇实际上有多少人使用 C++/CLI?那么有多少人在使用它呢?人们是否只在托管环境下寻找程序员的特定工作?围绕 c++/cli 的社区有多大?从我目前看到的情况来看,有不少语法变化,作为 C++
我在 Odoov9 社区模块上有一个选择字段 但是,每次我点击它,选择一个记录时,它都会抛出这个错误: Error: No conversion for undefined http://localh
我在cashflow_report模型上有这个方法: class cashflow_report(models.Model): _name = 'cashflow.report' _d
我正在尝试通过模块将一个表中的字段添加到另一个表中。 具体来说,尝试从 product.product 继承一个字段,即 price 字段,将其添加到 stock.move 模型中。 所以,我在我正在
我继承了 res.partner 模型,现在,我想将 vat 字段设置为 required 和 unique . 我知道如何正常执行此操作,例如在新模型上,但我希望原始字段具有这些属性。 我怎样才能实
我需要做什么才能让 Idea 在未打开的文件中发现错误? 两个示例场景可以更好地了解我的想法: 使用现有源添加新模块。模块已加载,后台扫描任务已完成,所有文件看起来都很好。直到打开。 Idea 会将文
我注意到 Stack Overflow 上有一些类似的问题,但它们要么不是我想要做的,要么是过时的答案。 我是 Google Plus 社区的所有者,我希望将该社区嵌入我们的网站,类似于将 Twitt
所以我将我的 Steamworks SDK 导入到我的虚幻引擎项目中。它构建并运行时,我得到了 Steam 覆盖。太棒了! 但是,我现在正在尝试获取用户的好友列表,这需要 Steam Communit
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 1 年前。 Improve
我正在 Pycharm Community Edition 2017.2.3 中开发 Python 3.6 项目。 我的项目中有多个运行配置。每个不同的运行配置将打开不同的 'Run tool win
我是一名优秀的程序员,十分优秀!