python networkx 边权重_Python / NetworkX:通过边缘发生频率向边缘添加权重
我在networkx中创建了一个MultiDiGraph,我试图给边添加权重,然后根据边缘出现的频率/计数分配一个新的权重。我使用下面的代码来创建图形并添加权重,但是我不确定如何解决基于计数重新分配权重的问题:
g = nx.MultiDiGraph()
df = pd.read_csv('G:\cluster_centroids.csv', delimiter=',')
df['pos'] = list(zip(df.longitude,df.latitude))
dict_pos = dict(zip(df.cluster_label,df.pos))
#print dict_pos
for row in csv.reader(open('G:\edges.csv', 'r')):
if '[' in row[1]: #
g.add_edges_from(eval(row[1]))
for u, v, d in g.edges(data=True):
d['weight'] = 1
for u,v,d in g.edges(data=True):
print u,v,d编辑
我能够成功地为每个边缘(我的原始问题的第一部分)分配权重,如下所示:
for u, v, d in g.edges(data=True):
d['weight'] = 1
for u,v,d in g.edges(data=True):
print u,v,d但是,我仍然无法根据边缘出现的次数重新分配权重(图形中的单个边缘可能会出现多次)?我需要做到这一点,以便用更少的计数(使用边缘颜色或宽度)可视化具有更高计数的边。我不知道如何继续重新分配基于计数的权重,请告知。以下是示例数据,以及指向我的完整数据集的链接。
数据
样本质心(节点):
cluster_label,latitude,longitude
0,39.18193382,-77.51885109
1,39.18,-77.27
2,39.17917928,-76.6688633
3,39.1782,-77.2617
4,39.1765,-77.1927
5,39.1762375,-76.8675441
6,39.17468,-76.8204499
7,39.17457332,-77.2807235
8,39.17406072,-77.274685
9,39.1731621,-77.2716502
10,39.17,-77.27样品边缘:
user_id,edges
11011,"[[340, 269], [269, 340]]"
80973,"[[398, 279]]"
608473,"[[69, 28]]"
2139671,"[[382, 27], [27, 285]]"
3945641,"[[120, 422], [422, 217], [217, 340], [340, 340]]"
5820642,"[[458, 442]]"
6060732,"[[291, 431]]"
6912362,"[[68, 27]]"
7362602,"[[112, 269]]"完整数据:
质心(节点):https://drive.google.com/open?id=0B1lvsCnLWydEdldYc3FQTmdQMmc
边缘:https://drive.google.com/open?id=0B1lvsCnLWydEdEtfM2E3eXViYkk
UPDATE
至少暂时地,我能够通过设置minLineWidth并将其乘以重量来解决由于边缘重量过高而造成边缘宽度过度不相称的问题:
minLineWidth = 0.25
for u, v, d in g.edges(data=True):
d['weight'] = c[u, v]*minLineWidth
edges,weights = zip(*nx.get_edge_attributes(g,'weight').items())并使用nx.draw_networkx_edges()中的width=[d['weight'] for u,v, d in g.edges(data=True)],如以下解决方案中所述。
另外,我可以使用以下缩放颜色:
# Set Edge Color based on weight
values = range(7958) #this is based on the number of edges in the graph, use print len(g.edges()) to determine this
jet = cm = plt.get_cmap('YlOrRd')
cNorm = colors.Normalize(vmin=0, vmax=values[-1])
scalarMap = cmx.ScalarMappable(norm=cNorm, cmap=jet)
colorList = []
for i in range(7958):
colorVal = scalarMap.to_rgba(values[i])
colorList.append(colorVal)然后在nx.draw_networkx_edges()中使用参数edge_color=colorList。
python networkx 边权重_Python / NetworkX:通过边缘发生频率向边缘添加权重相关推荐
- python networkx 边权重_Python/NetworkX:动态计算边权重
我有一个用networkx创建的未加权图,我想根据边出现的计数/频率计算节点之间的边的权重.图中的一条边可以出现多次,但是边出现的频率是事先不知道的.其目的是基于连接节点之间移动的权重(例如计数/频率 ...
- python绘制社会关系网络图_Python networkx 网络图绘制
简单演示 import networkx as nx import matplotlib.pyplot as plt # 定义空图 g = nx.Graph() # 增加节点 g.add_node(1 ...
- python绘制社会关系网络图_python networkx 包绘制复杂网络关系图的实现
1. 创建一个图 import networkx as nx g = nx.Graph() g.clear() #将图上元素清空 所有的构建复杂网络图的操作基本都围绕这个g来执行. 2. 节点 节点的 ...
- python 传奇服务端_python networkx中的传奇
当您使用nx.draw时,似乎存在某种错误.尝试使用nx.draw_networkx. 然后使用matplotlib中的轴在绘制图形时传递它.该轴应包含节点的标签和颜色,同时绘制(0,0) – > ...
- networkx edge 属性_python图算法库Networkx笔记-第一章
基础操作: import networkx as nx import matplotlib.pyplot as plt%matplotlib inline # 创建一个graph object G = ...
- python随机数权重_Python实现基于权重的随机数2种方法
问题: 例如我们要选从不同省份选取一个号码,每个省份的权重不一样,直接选随机数肯定是不行的了,就需要一个模型来解决这个问题. 简化成下面的问题: 字典的key代表是省份,value代表的是权重,我们现 ...
- python图片读取优化_Python下图片的高斯模糊化的优化
资源下载 #本文PDF版下载 Python下图片的高斯模糊化的优化(或者单击我博客园右上角的github小标,找到lab102的W6目录下即可) #本文代码下载 高斯模糊(一维)优化代码(和本文方法集 ...
- Python使用matplotlib可视化散点图、并在可视化图像的底部和右边添加边缘直方图、自定义边缘直方图的色彩(Marginal Histogram)
Python使用matplotlib可视化散点图.并在可视化图像的底部和右边添加边缘直方图.自定义边缘直方图的色彩(Marginal Histogram) 目录
- vscode使用教程python-VSCode下好用的Python插件及配置_python
这篇文章主要介绍了微软官方的Python插件,已经自带很多功能,下面是插件功能描述,其中部分内容我做了翻译,需要的朋友可以参考下 MS Python插件. 这是微软官方的Python插件,已经自带很多 ...
最新文章
- Win8 Metro(C#)数字图像处理--2.69中点滤波器
- C++ Primer 5th笔记(chap 14 重载运算和类型转换)输入和输出运算符
- Mabtyis无侵入式编程
- java的static块执行时机
- Problem D: 栈的基本运算(栈和队列)
- 使用计算机六年级,二十年后的电子计算机六年级作文
- npm和package.json那些不为常人所知的小秘密
- python 3.8.0安卓_Python 3.8.0 正式版发布,新特性初体验
- Operating System-进程间互斥的方案-保证同一时间只有一个进程进入临界区(3)- TSL指令...
- Android 12原生设计曝光,Android 12原生设计曝光 网友看了惊呼神似iOS
- 演示6:python音乐下载器
- java中check和uncheck异常处理
- 实战:第十五章:摸爬滚打这些年的心路历程
- C++ 16进制日志输出 每行右侧ASII输出
- 前端 下载文件简易方法(兼容IE)
- Android图片轮播第三弹,给你想不到的惊喜
- 哈工大软件构造第一章总结
- Js 怎么遍历json对象所有key及根据动态key获取值
- 【运动学】基于matlab GUI三体运动模拟【含Matlab源码 871期】
- ajax put 请求