如何解决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 举报,一经查实,本站将立刻删除。