Networkx如何画点图并显示边权

该博客展示了如何从CSV数据集中读取边的连接关系和权重,利用NetworkX库创建并绘制有向图。通过nx.random_layout生成节点位置,并在图上显示边的权重,提供了一种可视化网络数据的方法。

程序描述:给出一个数据集power3.csv,含有n行3列数据,前两列表示点之间的连接关系,最后一列表示边的权重,画出这个点图,并在图上显示边权。

 

数据集:

 在Jupyter notebook中:

%matplotlib inline
%matplotlib notebook
#%matplotlib inline这一句是IPython的魔法函数,可以在IPython编译器里直接使用,
#作用是内嵌画图,省略掉plt.show()这一步,直接显示图像 可以将matplotlib的图表直接嵌入到Notebook
#之中,或者使用指定的界面库显示图表,它有一个参数指定matplotlib图表的显示方式。inline表示将图表嵌入到Notebook中
#魔法命令都以%或者%%开头,以%开头的成为行命令,%%开头的称为单元命令。行命令只对命令所在的行有效,而
#单元命令则必须出现在单元的第一行,对整个单元的代码进行处理。
import matplotlib.pyplot as plt
import networkx as nx
import pandas as pd
import numpy as np
#读入数据集文件
def read_csv(path):
    data = pd.read_csv(path,header=None)
    data= np.array(data)
    return data
edges = read_csv('data//power3.csv')#这里是数据集的位置
g= nx.DiGraph()#定义有向图,无向图是nx.Graph()
g.add_weighted_edges_from(edges)
weights=g.edges.data("weight")
for k in weights:
    g.add_edge(int(k[0]), int(k[1]), weight=k[2])
#生成节点位置序列
pos = nx.random_layout(g)
weights = nx.get_edge_attributes(g, "weight")
nx.draw_networkx(g, pos, with_labels=True)
nx.draw_networkx_edge_labels(g, pos, edge_labels=weights)
plt.show()
##2020-3-19

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值