def render(self, filename, label='', labelloc='t', labeljust='c',
rankdir="TB", ranksep=0.7,
fontname='Arial', fontsize=24,
use_urls=False,
node_fixedsize='true', nodesep=0.1, node_width=0.85, node_height=0.85, node_fontsize=15,
include_ids=False):
import pydot
# Graph
graph_args = {
"rankdir": rankdir,
"ranksep": ranksep,
"nodesep": nodesep,
"fontname": fontname,
"fontsize": fontsize,
}
if label:
graph_args.update({
"labelloc": labelloc,
"labeljust": labeljust,
"label": label
})
graph = pydot.Dot(**graph_args)
# Node
node_args = {
"fontsize": node_fontsize,
}
if use_urls:
node_seed_shape = 'rectangle'
node_shape = 'oval'
else:
node_seed_shape = 'square'
node_shape = 'circle'
node_args.update({
"fixedsize": node_fixedsize,
"width": node_width,
"height": node_height,
})
graph.set_node_defaults(**node_args)
for page in self.pages:
graph.add_node(pydot.Node(name=self._clean_page_name(page, include_id=include_ids),
fontname=fontname,
fontsize=node_fontsize,
shape=node_seed_shape if page.is_seed else node_shape))
for link in page.links:
graph.add_edge(pydot.Edge(self._clean_page_name(page, include_id=include_ids),
self._clean_page_name(link, include_id=include_ids)))
graph.write_png(filename)
评论列表
文章目录