You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 02:55:25