温馨提示×

温馨提示×

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

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

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

发布时间:2021-11-22 14:49:01 阅读:634 作者:柒染 栏目:大数据
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

如何理解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  node1    A2    B3    C4    D> edges  node1 node21     A     B2     A     C3     A     D4     B     C5     B     D6     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语言做网络图的分析    

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

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

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

原文链接:https://my.oschina.net/u/4579431/blog/4715638

AI

开发者交流群×