【发布时间】:2019-08-09 04:34:53
【问题描述】:
我想在 networkx 中绘制一个完全不可见的节点。基本上它应该就好像它没有被绘制一样。但是,由于我的代码结构,我不能轻易不绘制它。如果我可以将node_color 设置为类似于"Invisible" 会更简单。
由于 networkx 使用 matplotlib.pyplot.scatter 绘制节点,我想我会像 matplotlib 一样处理它。为此,只需将特定标记的c 参数设置为字符串"None"(参见Plotting with a transparent marker but non-transparent edge)。
这是一个示例,其中 5 个标记中有 2 个不可见:
plt.scatter(range(5), range(5), c = ["None", "black", 'red', "None", 'blue'])
让我们用 networkx 试试吧:
G = nx.erdos_renyi_graph(100,0.03)
nodelist = list(G.nodes())
colorlist = ["None" if node%2==0 else "red" for node in nodelist] #even nodes should be invisible
nx.draw_networkx(G, nodelist=nodelist, node_color=colorlist)
注意偶数节点不是不可见的,它们是黑色的。
我不明白,因为当我从networkx查看source code时,相关行似乎是
node_collection = ax.scatter(xy[:, 0], xy[:, 1],
s=node_size,
c=node_color,
marker=node_shape,
cmap=cmap,
vmin=vmin,
vmax=vmax,
alpha=alpha,
linewidths=linewidths,
edgecolors=edgecolors,
label=label)
所以colorlist 应该直接发送到scatter 而不做任何更改。
谁能解释为什么会这样?为什么这些节点变黑了?
【问题讨论】:
-
只是为了让潜在的回答者清楚 - 我的问题是“为什么节点变成黑色?”我知道仅绘制节点子集的标准 networkx 方法。
标签: python matplotlib networkx