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

如何修改NetworkX绘制的图的节点大小?node_size参数报错如何解决?

NetworkX自定义节点大小报错解决方案

你遇到的ValueError: s must be a scalar, or float array-like with the same size as x and y报错,核心原因确实是node_size传入的times_list长度和图的节点总数不匹配,除此之外你代码里的G.size(500)是无效代码,该方法不能修改节点大小,可按以下步骤修复:

  • 第一步:校验长度匹配
    首先确认times_list和图节点数一致,执行下面代码即可查看两者长度:
print("图节点总数:", G.number_of_nodes())
print("自定义大小列表长度:", len(times_list))

如果需要所有节点大小相同,直接给node_size传入数字标量即可,不需要传列表。如果需要每个节点大小不同,要先调整times_list,保证每个节点对应一个大小值。

  • 第二步:调整绘图代码
    你原代码里调用了nx.draw_networkx(G, pos),该方法会默认一次性绘制节点、边、节点标签,要自定义节点大小有两种可选方案:
    方案1:直接在nx.draw_networkx中传入node_size参数,一次性完成绘制,代码示例如下:

    import networkx as nx
    import matplotlib.pyplot as plt
    
    G = nx.DiGraph()
    fig, ax = plt.subplots(figsize=(32,24))
    G.add_edges_from(number_list)
    pos = nx.spring_layout(G)
    
    # 所有节点统一大小写法
    nx.draw_networkx(G, pos, node_size=500, node_color='Gray', node_shape='o')
    
    # 每个节点自定义大小写法,需保证times_list长度等于节点总数
    # nx.draw_networkx(G, pos, node_size=times_list, node_color='Gray', node_shape='o')
    
    # 绘制边标签
    edge_labels = duration_list
    nx.draw_networkx_edge_labels(G, pos, edge_labels=dict(zip(map(tuple, number_list), edge_labels)))
    
    plt.axis('off')
    plt.show()
    

    方案2:拆分绘图逻辑,分别绘制节点、边、标签,灵活度更高,代码示例如下:

    import networkx as nx
    import matplotlib.pyplot as plt
    
    G = nx.DiGraph()
    fig, ax = plt.subplots(figsize=(32,24))
    G.add_edges_from(number_list)
    pos = nx.spring_layout(G)
    
    # 单独绘制自定义大小的节点
    nx.draw_networkx_nodes(G, pos, node_size=times_list, node_color='Gray', node_shape='o')
    # 绘制边
    nx.draw_networkx_edges(G, pos)
    # 绘制节点标签
    nx.draw_networkx_labels(G, pos)
    # 绘制边标签
    edge_labels = duration_list
    nx.draw_networkx_edge_labels(G, pos, edge_labels=dict(zip(map(tuple, number_list), edge_labels)))
    
    plt.axis('off')
    plt.show()
    
  • 注意事项
    NetworkX的node_size单位是点的平方,常规取值范围为100-1000,如果times_list内数值过小,节点会无法正常显示,可根据需要按比例放大列表内的数值。
    原代码中的G.size(500)可直接删除,该方法用于返回图的加权边数,和节点大小设置无关。

内容的提问来源于stack exchange,提问作者Md.Shams Araf Shovon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:18:00