igraph绘制度分布时孤立节点未正确显示的问题求助
解决igraph度分布绘图时孤立节点显示错误的问题
你遇到的问题是igraph的degree.distribution返回值的索引规则和R默认绘图的x轴逻辑不匹配导致的:
degree.distribution返回的向量,第1个元素对应度0(孤立节点)的比例,第2个对应度1,以此类推- 但R的默认
plot()函数绘制向量时,x轴刻度默认是向量的位置序号(1、2、3...),所以会把度0的比例错误关联到x=1的位置,看起来像是度1的比例,同时完全漏掉了度0的标签。
修正方法(两种任选)
方法1:用barplot直接指定度标签
这是最直观的方式,适合展示离散的度分布:
# 先获取度分布结果 dist <- degree.distribution(net.rel_non_lucra) # 生成对应的度值(从0开始,长度和dist一致) deg_values <- 0:(length(dist)-1) # 绘制柱状图 barplot( dist, names.arg = deg_values, # 指定x轴每个柱子的标签为对应的度 xlab = "节点度", ylab = "比例", main = "非盈利关系网络的度分布" )
方法2:用plot函数手动匹配度值和比例
如果偏好使用线条/垂直线样式的图:
dist <- degree.distribution(net.rel_non_lucra) deg_values <- 0:(length(dist)-1) # type="h" 绘制垂直线,lwd控制线宽 plot( x = deg_values, y = dist, type = "h", lwd = 8, xlab = "节点度", ylab = "比例", main = "非盈利关系网络的度分布" ) # 也可以加散点标记增强可读性 points(deg_values, dist, pch = 16)
验证你的数据
你的网络有22个节点,按返回的比例计算:
- 度0(孤立节点):22 × 0.4545 ≈ 10个
- 度1:22 × 0.1364 ≈ 3个
- 度2:22 × 0.0909 ≈ 2个
- ... 所有度的节点数总和刚好是22,说明
degree.distribution的计算是正确的,只是绘图时的轴标签没对应上。
内容的提问来源于stack exchange,提问作者NA_
相关产品推荐
相关产品推荐

