【问题标题】:How to determine specific color and size of chosen nodes in Networkx graph plot如何确定 Networkx 图表中所选节点的特定颜色和大小
【发布时间】:2014-07-31 10:35:44
【问题描述】:

我有以下代码

#!/usr/bin/python

import sys
import networkx as nx
import matplotlib.pyplot as plt

G = nx.Graph();
G.add_node('A')
G.add_node('B')
G.add_node('C')
G.add_node('D')
G.add_edge('A','B',weight=1)
G.add_edge('C','B',weight=1)
G.add_edge('B','D',weight=30)

colors=range(20)
nx.draw_spring(G,font_size=20,width=2,node_size=1000,node_color='#A0CBE2')
plt.savefig("/Users/handsomeguy/Desktop/test.png",dpi=300)

生成以下图表(当然没有注释):

如上图所述。我想改变节点CD的颜色并放大 这些选择的节点。我怎样才能做到这一点?

请注意,C 和 D 是用户预先确定的节点。

【问题讨论】:

    标签: python graph plot networkx


    【解决方案1】:

    当您有一个小图时,更改单个节点样式的一种简单方法是传递 networkx.draw_spring 大小/颜色列表的参数(例如 node_sizenode_color)。诀窍是,如果您使用列表,列表必须包含每个节点的大小/颜色,并且列表必须与G.nodes() 的顺序相同(因此我@ 987654328@下例中的节点):

    nx.draw_spring(G, nodelist=sorted(G.nodes()), font_size=20, width=2,
                   node_size=[1000, 1000, 2000, 3000],
                   node_color=["#A0CBE2", "#A0CBE2", "#FF0000", "#FFFF00"])
    

    结果如下:

    另一个选项是首先存储图形的节点/边的布局,然后使用networkx.draw_networkx。当您有一个大图并且只想更改几个节点的样式时,这可能更有用。在这里,我先将graph的spring布局存储在pos中,然后通过pos来绘制每个节点及其边:

    pos = nx.spring_layout(G)
    nx.draw_networkx(G, pos=pos, nodelist=["A", "B"], node_size=1000, node_color='#A0CBE2', font_size=20, width=2)
    nx.draw_networkx(G, pos=pos, nodelist=["C"], node_size=2000, node_color='#FF0000', font_size=20, width=2,)
    nx.draw_networkx(G, pos=pos, nodelist=["D"], node_size=3000, node_color='#FFFF00', font_size=20, width=2)
    

    注意:要关闭networkx.draw_networkx图中的轴,请在plt.show()之前添加以下命令:

    limits=plt.axis('off') 
    

    【讨论】:

    • 谢谢。你的最后一种方法是我正在寻找的。但它显示 x-y 轴。我怎样才能删除它?
    猜你喜欢
    • 2017-09-02
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    • 2015-11-06
    • 2021-03-13
    • 2015-01-17
    相关资源
    最近更新 更多