gpt4 book ai didi

python - 尝试在networkx中绘制不可见节点,但得到黑色节点

转载 作者:行者123 更新时间:2023-12-01 00:40:08 36 4
gpt4 key购买 nike

我想在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'])

enter image description here

让我们尝试一下 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)

enter image description here

请注意,偶数节点不是不可见的,它们是黑色的。

我不明白,因为当我查看source code时来自networkx,相关行似乎是

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,无需任何更改。

谁能解释一下为什么会发生这种情况?为什么这些节点会变黑?

最佳答案

花了一些时间才发现问题,但我能够使用 matplotlib 重现 networkx 行为:

pl.scatter(range(5), range(5), c = ["None", "black", 'red', "None", 'blue'], alpha=1.0)

Networkx 默认参数 alpha=1.0 (与 matplotlibalpha=None 不同)。以下内容对我有用:

nx.draw_networkx(G, nodelist=nodelist, node_color=colorlist, alpha=None, with_labels=False) 

感谢 @Paul Brodersen 的评论:看起来不同的默认值已得到解决:比较 2.3 的代码与 latest (2.4.xy)。

关于python - 尝试在networkx中绘制不可见节点,但得到黑色节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57423537/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com