如何理解R语言做网络图的分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
1、一个包括一列数据的数据框,每一行是各个节点的名称
2、一个包含两列数据的数据框,每一行代表节点节点之间的连线
> 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()
给节点添加一列分组信息,给每个节点一个数值,用来映射节点大小。
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))
边的渐变色深蓝到浅蓝不太好看,换!加上语句
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")
每个节点的点太小了,增大!加上语句
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)
点的图例太大了,占了其他图例的位置,不要他了!加上语句
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)
这里遇到一个问题是:有没有办法改变图例中点的大小呢?
新学到的:还可以改变图例的前后顺序,添加语句
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))
虽然点大小的图例删掉了,但是他应该还是站着位置呢!如果想要把颜色图例设置为最后可能得把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)
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。