欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python-networkx-graphviz

程序员文章站 2024-03-15 21:30:12
...

1:安装GraphViz,配置系统环境变量;
2:安装graphviz.whl;
3:安装pygraphviz.whl;
4:Enjoy!

Example Code:

# -*- coding: utf-8 -*-
import networkx as nx
import matplotlib.pyplot as plt
import graphviz 
import random
from networkx.drawing.nx_agraph import graphviz_layout

cm = plt.cm.jet 
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

G = nx.DiGraph()
G.edges(data = True)

G.add_node("a", size = 12)
G.add_node("b", size = 20)
G.add_node("c", size = 50)

G.add_edge("a","b", weight=1)
G.add_edge("b","a", weight=5)
G.add_edge("a","c", weight=6)
G.add_edge("b","c", weight=5)

for each in G.edges(data=True):
    print each[2]["weight"]

for each in G.edges("a",data=True):
    print each[2]["weight"]

pos=graphviz_layout(G)

#Draw nodes and labels
for each in G.nodes(data=True):
    nx.draw_networkx_nodes(G, pos, each[0], node_size = 100.0,  node_color=cm(250), alpha=0.95,with_labels = True,font_size =20, font_color ='gray')
    nx.draw_networkx_labels(G, pos, font_size=32, font_color='k', font_family='sans-serif', font_weight='normal', alpha=0.9, bbox=None, ax=None)

#Draw edges
for each in G.edges(data=True):#style = solid dashed
    nx.draw_networkx_edges(G, pos, G.edges(each[0],each[1]), edge_size=10.0,  edge_color='b', width=2, arrows=False, style='solid', alpha=0.9)

#Draw edge labels
labels =dict([((u, v), d['weight'])   for u, v, d in G.edges(data=True)])
nx.draw_networkx_edge_labels(G, pos, edge_labels=labels, label_pos=0.8, font_size=15, font_color='k', font_family='sans-serif', font_weight='normal', alpha=1.0, bbox=None, ax=None, rotate=True)


plt.show()
相关标签: networkx graphviz