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

Python matplotlib为图形每个顶点设置自定义颜色的方法

顶点独立着色实现方法

支持性说明

networkx 基于 matplotlib 绘图时,完全支持为每个顶点单独配置指定颜色,无需额外安装第三方库,仅需在绘图接口传入对应节点的颜色参数即可实现需求。

实现步骤

  • 绘图前先获取图结构的固定节点顺序,避免颜色和节点对应错位
  • 按照节点顺序逐一定制填充色,支持matplotlib兼容的所有颜色格式:内置颜色名、十六进制色值、RGB/RGBA元组都可使用
  • 调用nx.draw_networkx绘图时,通过node_color参数传入组装好的颜色列表即可

完整可运行代码

import networkx as nx
import matplotlib.pyplot as plt

class Graph:
    def __init__(self, edges, node_color_map=None):
        self._edges = edges
        # 存储节点名到颜色的映射关系,方便直接按节点名指定颜色
        self._node_color_map = node_color_map if node_color_map else {}

    def visualize(self):
        vg = nx.Graph()
        vg.add_edges_from(self._edges)
        # 固定节点顺序,保证颜色和节点一一对应
        node_list = list(vg.nodes)
        # 按节点顺序组装颜色列表,未指定颜色的节点默认使用浅灰色填充
        node_colors = [self._node_color_map.get(node, '#cccccc') for node in node_list]
        
        # 传入node_color参数实现逐节点独立着色
        nx.draw_networkx(
            vg,
            nodelist=node_list,
            node_color=node_colors,
            with_labels=True
        )
        plt.axis('off') # 隐藏默认坐标轴,和示例效果对齐
        plt.show()

edges = [['A', 'B'], ['A', 'C'], ['B', 'D'], ['C', 'D'],
         ['C', 'E'], ['D', 'F'], ['E', 'F']]
# 按节点名单独配置每个顶点的颜色,配色参考目标示例效果
custom_colors = {
    'A': '#ff6b6b',
    'B': '#4ecdc4',
    'C': '#45b7d1',
    'D': '#96ceb4',
    'E': '#ffeaa7',
    'F': '#dfe6e9'
}
G = Graph(edges, node_color_map=custom_colors)
G.visualize()

关键参数说明

  • nodelist:显式指定绘图的节点排列顺序,必须和node_color列表长度一致、顺序对应,否则会出现颜色和节点错配的问题
  • node_color:接收和节点顺序一一对应的颜色序列,支持所有matplotlib合法颜色值
  • 如果需要逐节点调整大小、边框色等属性,也可以通过node_size、edgecolors等参数传入对应长度的序列实现自定义

目标效果参考

顶点独立着色的图表示例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 03:16:04