pyvis 图重叠或不显示标签

问题描述

我正在做一个项目,我从 python 存储库中绘制图形,我的代码很长,而不是重要的部分。但这里是,以防有人想尝试报道:

import ast
from radon.visitors import ComplexityVisitor
import re
import os
from pyvis.network import Network


class Vert:
    def __init__(self,name,id,size,edges):
        self.name = name
        self.size = size
        self.edges = edges
        self.id = id
        
from pathlib import Path

rootDir = "/home/ask/Git/Zeeguu-API/"
directories = set()
# this is horrible
for file in Path(rootDir).rglob("*.py"):
    localDirs = str(file).split('/')
    directories.add(localDirs[-2])


def extract_importandClass_from_line(unline):

    x = re.search("^import (\S+)",unline) 
    x = re.search("^from (\S+)",unline) 
    return x.group(1)#,c.group(1).split('(')[0]
def extractClass(inline):
    c = re.search("^class (\S+)",inline) 
    return c.group(1).split('(')[0]


def importsAndClass(file):
    lines = [line for line in open(file)]
    classes = []
    all_imports = []
    for line in lines:
        try:
            imports = extract_importandClass_from_line(line)
            importEnd = imports.rsplit('.',1)[-1]
            importsFormatted = imports.replace('.','/')
            if (importEnd not in directories):
                all_imports.append(importsFormatted)
        except:
            try:
                class1 = extractClass(line)
                classes.append(class1)
            except:
                continue  
  
    return all_imports,classes
net = Network(directed=True,height="1500px",width="100%")
nodes = {}
nodeNames = set()
counter = 0
for file in Path(rootDir).rglob("*.py"):
    # opening file,and looking at contents
    f = open(file,"r")
    s = f.read()
    # analyzing complexity
    filename = str(file).replace(rootDir,"")
    analyzer = ComplexityVisitor.from_code(s)
    
    # getting the file name 
    splitFile = os.path.splitext(file.name)
    #getting imports    
    imports,classes = importsAndClass(file)

    nodeNames.add(str(filename))
    v = Vert(str(filename),counter,analyzer.total_complexity,imports)
    #creating vertex
    nodes[v.name] = v
    counter = counter + 1 
    net.add_node(v.id,label=v.name,size=v.size*2)

print("_________________________________")
for k,v in nodes.items():
    
    for i in v.edges:
        withPY = i + ".py"
        print(withPY)
        try:
            to = nodes[withPY].id 
            net.add_edge(v.id,to)
        except:
            print("Could not add edge to:" + str(i))    
        


net.show("network.html")

现在,当我绘制我的图表时,它看起来像 this,东西超级堆积在彼此之上。 所以我想要一些方法来避免重叠。经过一番研究,我发现我应该添加这一行:

net.barnes_hut(overlap=1)

我愿意。这导致 this 看起来更好,但现在突然之间,节点上的所有标签都消失了!?。

为什么我的标签不见了?以及如何获得非重叠和标签编辑:

我现在尝试了这个选项:

net.force_atlas_2based(overlap= 1)

这实际上是我想要的。现在唯一的问题是节点有时会相互碰撞,并开始不受控制地摆动

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)