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()
上一篇: Java中实现获取数组中最大值
下一篇: 算法题/和为s的两个数字