我想在Pyvis中可视化一个图形,它的节点有标签。我完全能够在Pyvis中看到它,但我的问题是它的可视化方式。在Pyvis中显示的图形不清楚,边被弄乱了。有什么方法可以更清晰地可视化图形吗?下面的图片显示了图表。

例如,在图中,节点15显示得很好。我希望其他节点以清晰的方式显示,这样连接就可以更清楚地显示。
更新:--这是我使用绘制图形的代码:
def showGraph(FileName, labelList):
Txtfile = open("./results.txt")
G = nx.read_weighted_edgelist(Txtfile)
Txtfile.close()
palette = (sns.color_palette("Pastel1", n_colors=len(set(labelList.values()))))
palette = palette.as_hex()
colorDict = {}
counter = 0
for i in palette:
colorDict[counter] = i
counter += 1
N = Network(height='100%', width='100%', directed=False, notebook=False)
for n in G.nodes:
N.add_node(n, color=(colorDict[labelList[n]]), size=5)
for e in G.edges.data():
N.add_edge(e[0], e[1], title=str(e[2]), value=e[2]['weight'])
N.show('result.html')results.txt是我的边缘列表文件,labelList保存每个节点的标签。标签是数字的。例如,节点48的标签是5,它可以是任何东西。我使用标签为节点提供不同的颜色。
发布于 2022-10-14 02:28:40
NetworkX 圆形布局倾向于使单个节点和它们之间的连接更易于查看,因此只要您不希望节点在绘制之后移动(而不拖动),您就可以尝试这样做。
在创建pyvis网络之前,在NetworkX图上运行以下命令创建一个字典,该字典将由节点键控并以(x,y)位置作为值。您可能需要稍微处理一下scale参数,看看什么最适合您。
pos = nx.circular_layout(G, scale = 1000)然后,在添加每个节点时,可以将x和y值从pos添加到pyvis网络。添加physics = False使节点保持在一个位置,除非单击并拖动它们。
for n in G.nodes:
N.add_node(n,
color=(colorDict[labelList[n]]),
size=5,
x = pos[n][0],
y = pos[n][1],
physics = False)我不确定边缘权重将如何发挥作用,所以您可能也应该添加physics = False到add_edge参数,以确保什么都不会移动。
因为我没有您的原始数据,所以我只生成了一个有10个节点的随机图,这就是pyvis中的结果。

https://stackoverflow.com/questions/74037906
复制相似问题