Python学习系列二十五数据结构-有向图绘制
Posted fjssharpsword
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习系列二十五数据结构-有向图绘制相关的知识,希望对你有一定的参考价值。
1、场景:从文件中读取节点、有向边,然后绘制。
2、参考代码:
# -*- coding: utf-8 -*-
import networkx as nx
import matplotlib.pyplot as plt
#读取文件,获取节点和边
f = open("D:\\\\tmp\\\\gy_contest_link_top.txt", "r")
nodelist=[]
edgelist=[]
while True:
line = f.readline()
if line:
pass # do something here
line=line.strip()
node=line.split(';')[0]#获取图节点
nodelist.append(node)
in_nodes=line.split(';')[1].split('#')#获取图边,该节点是终点
for ins in range( len(in_nodes) ) :
if in_nodes[ins].strip() !='':
in_edge=(in_nodes[ins],node)
if in_edge not in edgelist:
edgelist.append(in_edge)
out_nodes=line.split(';')[2].split('#')#获取图边,该节点是起点
for ins in range( len(out_nodes) ) :
if out_nodes[ins].strip() !='':
out_edge=(node,out_nodes[ins])
if out_edge not in edgelist:
edgelist.append(out_edge)
else:
break
f.close()
del nodelist[0] #删除表头生成的节点
del edgelist[0]
del edgelist[0] #删除表头生成的边
#print len(nodelist) #图节点
#print len(edgelist) #边数
#有向图绘制
G=nx.DiGraph()
G.add_nodes_from(nodelist)
G.add_edges_from(edgelist)
nx.draw_networkx(G, pos=None, arrows=True, with_labels=True)
#plt.savefig('D:\\\\tmp\\\\it.png')
plt.show()
效果图:
笔者没有对节点名做简易处理,所以看起来有点乱。
以上是关于Python学习系列二十五数据结构-有向图绘制的主要内容,如果未能解决你的问题,请参考以下文章
机器学习100天(二十五):025 L2正则化的Python实现
机器学习100天(二十五):025 L2正则化的Python实现