首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Pyvis中更清楚地显示图形?

如何在Pyvis中更清楚地显示图形?
EN

Stack Overflow用户
提问于 2022-10-12 07:21:49
回答 1查看 153关注 0票数 0

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

例如,在图中,节点15显示得很好。我希望其他节点以清晰的方式显示,这样连接就可以更清楚地显示。

更新:--这是我使用绘制图形的代码:

代码语言:javascript
复制
    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,它可以是任何东西。我使用标签为节点提供不同的颜色。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-14 02:28:40

NetworkX 圆形布局倾向于使单个节点和它们之间的连接更易于查看,因此只要您不希望节点在绘制之后移动(而不拖动),您就可以尝试这样做。

在创建pyvis网络之前,在NetworkX图上运行以下命令创建一个字典,该字典将由节点键控并以(x,y)位置作为值。您可能需要稍微处理一下scale参数,看看什么最适合您。

代码语言:javascript
复制
pos = nx.circular_layout(G, scale = 1000)

然后,在添加每个节点时,可以将x和y值从pos添加到pyvis网络。添加physics = False使节点保持在一个位置,除非单击并拖动它们。

代码语言:javascript
复制
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 = Falseadd_edge参数,以确保什么都不会移动。

因为我没有您的原始数据,所以我只生成了一个有10个节点的随机图,这就是pyvis中的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74037906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档