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

基于graph-tool的嵌套随机块模型:按高层社区设置颜色

按层级社区着色嵌套随机块模型绘图

要实现按指定高层级社区统一着色,核心是从嵌套块模型的层级结构中提取目标层级的块分配,再基于该分配生成对应颜色映射,传递给绘图参数即可。以下是修改后的完整代码:

import graph_tool.all as gt
import numpy as np

g = gt.collection.data["celegansneural"]
print(g)

state = gt.minimize_nested_blockmodel_dl(g)

# 选择目标层级:-1表示最高层级,0表示最底层,可根据需求调整
target_level_idx = -1
target_level = state.get_levels()[target_level_idx]
# 获取该层级下每个节点的块ID
block_assignments = target_level.get_blocks()
# 生成颜色映射:将块ID转换为颜色数组
vertex_colors = gt.prop_to_color(block_assignments, palette="tab20")

options = {
    'hedge_color': np.array([0., 0., 0., 1]),
    # 使用层级块对应的颜色填充层级顶点和原始节点
    'hvertex_fill_color': vertex_colors,
    'vertex_fill_color': vertex_colors,
    'output_size': (600, 600),
    'bg_color': 'w',
}

state.draw(beta=0.90, **options)

关键说明:

  • 层级选择:state.get_levels()返回模型的所有层级列表,索引-1对应最顶层(所有节点属于同一个社区,此时所有元素颜色一致),索引0对应最底层(原代码的默认着色逻辑),你可以根据需要调整target_level_idx的值选择中间层级。
  • 颜色生成:gt.prop_to_color()会自动将块ID映射为区分度高的颜色,也可以通过palette参数指定自定义调色板(比如"viridis"、"coolwarm"等)。
  • 参数传递:将生成的vertex_colors同时赋值给hvertex_fill_color(层级结构中的顶点)和vertex_fill_color(原始图节点),确保层级分支与对应节点颜色统一。

内容的提问来源于stack exchange,提问作者Matthias

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 10:22:09