如何理解R语言做网络图的分析

如何理解R语言做网络图的分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

站在用户的角度思考问题,与客户深入沟通,找到贡嘎网站设计与贡嘎网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都做网站、网站建设、外贸营销网站建设、企业官网、英文网站、手机端网站、网站推广、主机域名、虚拟空间、企业邮箱。业务覆盖贡嘎地区。

 使用R语言包ggraph做网络图需要准备的最基本的数据是:

1、一个包括一列数据的数据框,每一行是各个节点的名称 

2、一个包含两列数据的数据框,每一行代表节点节点之间的连线

 比如一个有四个节点的网络,每个节点是A,B,C,D。两两节点互相连接。数据的样子:
> nodes<-data.frame(node=c("A","B","C","D"))
> edges<-data.frame(node1=c("A","A","A","B","B","C"),
+                   node2=c("B","C","D","C","D","D"))
> nodes
 node
1    A
2    B
3    C
4    D
> edges
 node1 node2
1     A     B
2     A     C
3     A     D
4     B     C
5     B     D
6     C     D
>
   接下来对这个网络进行可视化
library(ggraph)
library(igraph)
net<-graph_from_data_frame(d=edges,vertices = nodes,directed = F)
ggraph(net)+
 geom_edge_link()+
 geom_node_point()
 
如何理解R语言做网络图的分析  
image.png
 接下来我想给节点分组,不同组节点填充不同的颜色;按照自己的数值给节点大小;每条连线也可以分配粗细和颜色。这些信息都可以在构造数据的时候添加进去。

给节点添加一列分组信息,给每个节点一个数值,用来映射节点大小。

nodes$Group<-c("group_1","group_1","group_2","group_2")
nodes$Size<-c(5,15,10,18)
nodes$Name<-nodes$node
 

给每条边添加颜色和粗细的映射数值

edges$color<-sample(seq(0,1,by=0.01),6)
edges$width<-sample(1:100,6)
   基本图形如下
net<-graph_from_data_frame(d=edges,vertices = nodes,directed = F)
ggraph(net)+
 geom_edge_link(aes(edge_width=width,edge_color=color))+
 geom_node_point(aes(size=Size,color=Group))+
 geom_node_text(aes(label=Name))
 
如何理解R语言做网络图的分析  
image.png
 接下来设置一下细节美化

边的渐变色深蓝到浅蓝不太好看,换!加上语句

scale_edge_color_continuous(low = "cyan",high = "red")

ggraph(net)+
 geom_edge_link(aes(edge_width=width,edge_color=color))+
 geom_node_point(aes(size=Size,color=Group))+
 geom_node_text(aes(label=Name))+
 scale_edge_color_continuous(low = "cyan",high = "red")
 

如何理解R语言做网络图的分析每个节点的点太小了,增大!加上语句

scale_size_area(max_size = 30)

ggraph(net)+
 geom_edge_link(aes(edge_width=width,edge_color=color))+
 geom_node_point(aes(size=Size,color=Group))+
 geom_node_text(aes(label=Name))+
 scale_edge_color_continuous(low = "cyan",high = "red")+
 scale_size_area(max_size = 30)
 

如何理解R语言做网络图的分析点的图例太大了,占了其他图例的位置,不要他了!加上语句

guides(size=F)

ggraph(net)+
 geom_edge_link(aes(edge_width=width,edge_color=color))+
 geom_node_point(aes(size=Size,color=Group))+
 geom_node_text(aes(label=Name))+
 scale_edge_color_continuous(low = "cyan",high = "red")+
 scale_size_area(max_size = 30)+
 guides(size=F)
 
如何理解R语言做网络图的分析  
image.png

这里遇到一个问题是:有没有办法改变图例中点的大小呢?

新学到的:还可以改变图例的前后顺序,添加语句

guides(color=guide_legend(order=3))

ggraph(net)+
 geom_edge_link(aes(edge_width=width,edge_color=color))+
 geom_node_point(aes(size=Size,color=Group))+
 geom_node_text(aes(label=Name))+
 scale_edge_color_continuous(low = "cyan",high = "red")+
 scale_size_area(max_size = 30)+
 guides(size=F)+
 guides(color=guide_legend(order=3))
 

如何理解R语言做网络图的分析虽然点大小的图例删掉了,但是他应该还是站着位置呢!如果想要把颜色图例设置为最后可能得把order设置为4。 

有的节点超出了绘图边界,可以通过修改x和y轴的范围来调整,加上命令

theme_bw()就可以显示出坐标轴的范围

ggraph(net)+
 geom_edge_link(aes(edge_width=width,edge_color=color))+
 geom_node_point(aes(size=Size,color=Group))+
 geom_node_text(aes(label=Name))+
 scale_edge_color_continuous(low = "cyan",high = "red")+
 scale_size_area(max_size = 30)+
 guides(size=F)+
 guides(color=guide_legend(order=3))+
 theme_bw()+
 xlim(-0.8,0.8)+ylim(-0.8,0.8)
 
如何理解R语言做网络图的分析    

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。


本文名称:如何理解R语言做网络图的分析
本文链接:http://csdahua.cn/article/iijdcp.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流