XINA包xina_plot_all函数添加centrality_type参数报错排查
解决XINA包xina_plot_all()添加centrality_type参数报错的问题
问题根源
报错Error in if (is.na(vertex.color)) { : the condition has length > 1,本质是XINA包在处理centrality_type参数时,内部用于判断的vertex.color变量变成了向量类型,而if语句只能处理单个布尔值,导致逻辑崩溃。这属于包的内部逻辑bug,和中心性计算模块的颜色赋值逻辑有关。
临时修复方案
强制指定单个顶点颜色
调用函数时手动传入vertex.color参数,用单个颜色值覆盖函数内部的向量赋值:xina_plot_all(xina_result, clustering_result, centrality_type="Eigenvector", vertex.color="skyblue")颜色值可以用颜色名(比如
"red")或十六进制码(比如"#2ECC71"),只要是单个值即可。检查聚类结果的颜色配置
如果你的clustering_result是自定义生成的,查看其中的color列是否为向量。若是,将其修改为单个标量值后再尝试:# 假设clustering_result是数据框,重置color列 clustering_result$color <- "lightgreen" xina_plot_all(xina_result, clustering_result, centrality_type="Eigenvector")更换包版本
该bug可能仅存在于特定版本,尝试更新到最新版或回退至旧版本:# 更新到最新版 install.packages("XINA") # 或者用devtools安装旧版(需先安装devtools) install.packages("devtools") devtools::install_version("XINA", version = "1.2.0") # 替换为已知稳定版本号手动计算中心性再绘图
绕开函数的centrality_type参数,自行用igraph计算中心性后传入:library(igraph) # 从xina_result中提取网络数据 net <- xina_result$graph # 计算特征向量中心性 eigen_cent <- eigen_centrality(net)$vector # 用计算出的中心性控制顶点大小实现可视化 xina_plot_all(xina_result, clustering_result, vertex.size = eigen_cent * 80) # 可自行调整缩放系数
内容的提问来源于stack exchange,提问作者Steven DeLaGarza
相关产品推荐
相关产品推荐

