温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-11-22 14:49:01 来源:亿速云 阅读:620 作者:柒染 栏目:大数据

如何理解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语言做网络图的分析    

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI