- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有以下代码:
#!/usr/bin/env python
import networkx as nx
def main():
"""docstring for main"""
outerdict = {"A":["a1","a2","a3"], "B":["b1","b2","b3","b5","b6", "b7"], "C":["c2","c3"], "D":["d1","d2","d3"]}
keynode = "Z"
colorlist = [ "#beaed4", "#fdc086", "#ffff99", "#386cb0","#f0027f"]
G = nx.Graph()
G.add_node(keynode,graphics={"fill":"#7fc97f","w":27,"h":27, "d":27})
for i,ky in enumerate(outerdict):
nodes = outerdict[ky]
nodecol = colorlist[i]
print ky, nodecol
for node in nodes:
G.add_node(node,graphics={"fill":nodecol,"w":27,"h":27,"d":27})
G.add_edge(keynode, node, value = 10)
outfile = "test.gml"
nx.write_gml(G,outfile)
if __name__ == '__main__':
main()
它生成以下 GML 文件:
graph [
node [
id 0
label "b6"
graphics [
h 27
d 27
w 27
fill "#ffff99"
]
]
node [
id 1
label "a1"
graphics [
h 27
d 27
w 27
fill "#beaed4"
]
]
node [
id 2
label "b5"
graphics [
h 27
d 27
w 27
fill "#ffff99"
]
]
node [
id 3
label "a3"
graphics [
h 27
d 27
w 27
fill "#beaed4"
]
]
node [
id 4
label "a2"
graphics [
h 27
d 27
w 27
fill "#beaed4"
]
]
node [
id 5
label "b7"
graphics [
h 27
d 27
w 27
fill "#ffff99"
]
]
node [
id 6
label "b1"
graphics [
h 27
d 27
w 27
fill "#ffff99"
]
]
node [
id 7
label "b2"
graphics [
h 27
d 27
w 27
fill "#ffff99"
]
]
node [
id 8
label "b3"
graphics [
h 27
d 27
w 27
fill "#ffff99"
]
]
node [
id 9
label "c3"
graphics [
h 27
d 27
w 27
fill "#fdc086"
]
]
node [
id 10
label "c2"
graphics [
h 27
d 27
w 27
fill "#fdc086"
]
]
node [
id 11
label "Z"
graphics [
h 27
d 27
w 27
fill "#7fc97f"
]
]
node [
id 12
label "d2"
graphics [
h 27
d 27
w 27
fill "#386cb0"
]
]
node [
id 13
label "d3"
graphics [
h 27
d 27
w 27
fill "#386cb0"
]
]
node [
id 14
label "d1"
graphics [
h 27
d 27
w 27
fill "#386cb0"
]
]
edge [
source 0
target 11
value 10
]
edge [
source 1
target 11
value 10
]
edge [
source 2
target 11
value 10
]
edge [
source 3
target 11
value 10
]
edge [
source 4
target 11
value 10
]
edge [
source 5
target 11
value 10
]
edge [
source 6
target 11
value 10
]
edge [
source 7
target 11
value 10
]
edge [
source 8
target 11
value 10
]
edge [
source 9
target 11
value 10
]
edge [
source 10
target 11
value 10
]
edge [
source 11
target 12
value 10
]
edge [
source 11
target 13
value 10
]
edge [
source 11
target 14
value 10
]
]
注意节点没有按顺序排列。例如 a1
位于 b1
和 b5
之间。这使得情节看起来像这样:
我期望图形是根据循环和初始数据结构 outderdict
按顺序排序。这样黄色节点将与其他黄色节点依次排列在一起。
如何使用 Networkx 对 GML 文件进行排序?其他解决方案(例如 Igraph),只要在 Python 框架内,都欢迎。
最佳答案
自 2015 年 1 月 1 日起,NetworkX 中提供了有序图数据结构。OrderedGraph 类将按照添加顺序从 NetworkX 数据结构中输出节点和边。
您需要在 https://github.com/networkx/networkx/ 获取最新的开发版本为以下工作。
import networkx as nx
outerdict = {"A":["a1","a2","a3"], "B":["b1","b2","b3","b5","b6", "b7"], "C":["c2","c3"], "D":["d1","d2","d3"]}
keynode = "Z"
colorlist = [ "#beaed4", "#fdc086", "#ffff99", "#386cb0","#f0027f"]
G = nx.OrderedGraph()
G.add_node(keynode,graphics={"fill":"#7fc97f","w":27,"h":27, "d":27})
for i,ky in enumerate(outerdict):
nodes = outerdict[ky]
nodecol = colorlist[i]
print ky, nodecol
for node in nodes:
G.add_node(node,graphics={"fill":nodecol,"w":27,"h":27,"d":27})
G.add_edge(keynode, node, value = 10)
outfile = "test.gml"
nx.write_gml(G,outfile)
请注意,当您遍历“enumerate(outerdict)”时,您的“outerdict”数据结构的出现顺序可能与您初始化它的顺序不同。如果节点“A”、“B”、“C”和“D”的顺序对您很重要,那么您将需要更改将它们添加到图表中的方式,以确保它们按该顺序插入。
关于python - 如何使 Networkx 生成具有排序节点的 GML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29027335/
我正在尝试对网络上的投票动态进行建模,并希望能够在 NetworkX 中创建一个图表,在其中我可以在节点上迭代投票过程,让它们的颜色变化对应于它们的投票“标签”。 我已设法获得此代码以查看每个节点的属
我无法计算简单 NetworkX 加权图的中心性。 这是正常的还是我做错了什么? 我使用简单的 add_edge(c[0],c[1],weight = my_values) 添加边,其中c[0],c[
我想在函数调用 d(n) 之前比较 networkx.Graph 对象 n 的状态(有副作用)之后与国家合作。 有一些可变的对象节点属性,例如 n.node[0]['attribute'],我想对其进
我正在使用 NetworkX 生成一些噪声数据的图表。我想通过删除虚假分支来“清理”图表,并希望避免重新发明轮子。 例如,链接的图片显示了一组示例图形,作为由灰线连接的彩色节点。我想修剪白框指示的节点
我目前正在尝试制定一种算法来在图中查找派系,幸运的是我从 Networkx 找到了一个函数的文档,该函数就是这样做的。不幸的是,变量名有点简洁,我很难理解代码的每一部分的作用。 这里是 find_cl
我正在尝试使用 NetworkX 在两个节点之间添加平行边,但由于以下错误而失败。我究竟做错了什么? import networkx as nx import graphviz g1 = nx.Mul
我希望将 Pajek 数据集转换为 networkx Graph()。数据集来自哥斯达黎加Family Ties 。我正在使用非常方便的 networkx.read_pajek(pathname) 函
我在networkx中有一个巨大的图,我想从每个节点获取深度为2的所有子图。有没有一种好的方法可以使用networkx中的内置函数来做到这一点? 最佳答案 正如我在评论中所说,networkx.ego
我希望将 Pajek 数据集转换为 networkx Graph()。数据集来自哥斯达黎加Family Ties 。我正在使用非常方便的 networkx.read_pajek(pathname) 函
我在使用以下代码时遇到问题。边连接节点。但是是否有可能有一个定向网络,如果一个“人”跟随一个“人”,但它只是一种方式,在边缘有箭头或方向。 plt.figure(figsize=(12, 12)) #
我正在 Windows 机器上使用 Python 3,尽管付出了很多努力,但仍未能安装 pygraphviz。单独讨论。 我有networkx和graphviz模块...是否有一个范例可以在netwo
我正在使用《Python 自然语言处理》一书(“www.nltk.org/book”)自学 Python 和 NLTK。 我在 NetworkX 上被困在第 4 章第 4 部分第 8 部分。当我尝试运
下面是我的代码: import networkx as nx for i in range(2): G = nx.DiGraph() if i==0: G.add_ed
我正在使用 deap 符号回归示例问题中的这段代码,图形显示正常,但我希望节点扩展为圆角矩形以适合文本 自动 . (我不想只是通过反复试验来指定节点大小)。我该怎么做? # show tree imp
我正在尝试使用 networkx 读取 gml 文件(很简单吧?),除非我尝试读取文件时出现错误“networkx.exception.NetworkXError: cannot tokenize u
如何按厚度在networkx中绘制N> 1000个节点的加权网络?如果我有一个源、目标节点和每个边的权重的 .csv 列表,我正在考虑使用该方法: for i in range(N) G.add_ed
我希望 networkx 在我的定向中找到绝对最长的路径, 无环图。 我知道 Bellman-Ford,所以我否定了我的图长度。问题: networkx 的 bellman_ford() 需要一个源节
我在图中有一个节点,它充当一种“临时连接器”节点。我想删除该节点并更新图中的边,以便其所有直接前辈都指向其直接后继者。 在 networkx 中是否有内置功能可以做到这一点,还是我需要推出自己的解决方
我有两张彩色图表。我想确定它们是否同构,条件是同构必须保留顶点颜色。 networkx 中是否有算法可以做到这一点? 这些图是无向且简单的。 最佳答案 检查documentation对于is_isom
我有一组起点-终点坐标,我想计算它们之间的最短路径。 我的起点-终点坐标有时位于一条长直线道路的中间。但是,OSMnx/networkx 计算的最短路径不会考虑中间边到最近节点的路径。 OSMnx 或
我是一名优秀的程序员,十分优秀!