matlab有向图的绘制,【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()

效果图:

88c6becddda42ce5cdc95d1e0e432d97.png

笔者没有对节点名做简易处理,所以看起来有点乱。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值