graph-tool中如何设置边与源顶点同色且无颜色渐变
graph-tool边与源顶点同色无渐变实现方案
该需求可通过以下步骤完成:
- 生成顶点到颜色的映射
调用minimize_nested_blockmodel_dl返回的模型实例的get_blocks()方法,获取每个顶点对应的块标签,通过graph_tool.draw.get_color_map()为每个块生成固定RGB颜色,建立顶点ID到颜色值的映射属性。 - 批量设置边的颜色属性
新建边的颜色属性数组,遍历全量边,通过边对象的source()方法获取其源顶点,将源顶点的颜色值直接赋值给对应边的颜色属性。 - 绘图时关闭渐变参数
调用graph_draw绘图时,显式设置edge_gradient=None,同时传入预生成的边颜色属性,即可完全消除边的颜色渐变效果,实现边与源顶点颜色完全一致。
示例代码
import graph_tool.all as gt # 你的图数据与嵌套块模型拟合逻辑 g = gt.collection.data["polblogs"] # 此处替换为你的图对象 state = gt.minimize_nested_blockmodel_dl(g) # 生成顶点颜色属性 blocks = state.get_blocks() color_map = gt.get_color_map(sorted(set(blocks)), "tab20") vertex_color = g.new_vertex_property("vector<double>") for v in g.vertices(): vertex_color[v] = color_map[blocks[v]] # 生成与源顶点同色的边属性 edge_color = g.new_edge_property("vector<double>") for e in g.edges(): edge_color[e] = vertex_color[e.source()] # 绘图输出 gt.graph_draw( g, vertex_fill_color=vertex_color, edge_color=edge_color, edge_gradient=None, # 强制关闭边渐变 output="matched_color_graph.pdf" )
如果你需要自定义配色,可直接替换get_color_map的配色参数,也可以手动构造块标签到RGB值的字典完成颜色映射。
内容的提问来源于stack exchange,提问作者Damian Demarest
相关产品推荐
相关产品推荐

