R中使用ggnet2结合附加属性表定义网络图节点形状
ggnet2按节点二进制编码自定义形状的实现方案
首先需要将节点类型属性绑定到igraph网络对象,再通过shape参数搭配形状映射规则实现需求,步骤如下:
1. 挂载节点属性
先把读入的属性表中存储二进制类型的字段,赋值为igraph网络的节点属性。如果不确定属性表和网络节点的顺序是否一致,优先用节点名匹配的方式赋值,避免属性错位:
# 注意:代码里的"type"替换为你属性表中二进制编码列的实际列名 V(g)$node_type <- attr[V(g)$name, "type"]
如果确认属性表的行顺序和网络节点顺序完全一致,也可以直接用V(g)$node_type <- attr$type赋值。
2. 配置绘图参数
ggnet2中shape参数传入挂载好的节点属性名,再通过shape.palette手动指定每个编码对应的形状即可,完整绘图代码如下:
ggnet2( g, size = "degree", node.color = "darkgreen", shape = "node_type", # 形状映射规则:编码0对应实心圆形,编码1对应实心三角形 shape.palette = c("0" = 19, "1" = 17) )
说明:这里使用R原生pch形状编码:19为实心圆形、17为实心正三角形,如果需要空心样式,可替换为
c("0" = 1, "1" = 2),分别对应空心圆、空心三角形。
内容的提问来源于stack exchange,提问作者Max Stüwe
相关产品推荐
相关产品推荐

