网络X 0.99#
上映日期:2008年11月18日
请参阅:https://networkx.lanl.gov/trac/timeline
新功能#
此版本对图形API的部分部分进行了重大更改。请参阅http://networkx.lanl.gov/reference/api_changes.html
更新Graph和DiGraph类以使用加权图作为API的默认更改,以实现性能和代码简单性。
新的多重图类和多重有向图类(取代XGraph和XDiGraph)
更新以使用Sphinx文档系统http://networkx.lanl.gov/
实验标号图和标号有向图
已将包和文件布局移到子目录。
错误修复#
HANDLE ROOT=正确绘制_graph viz的选项
实例#
更新以使用networkx-0.99 API
绘图示例现在使用matplotlib.pyploy接口
在许多示例中改进了图纸
新示例-请参阅http://networkx.lanl.gov/examples/
networkx-0.99是networkx-1.0之前的倒数第二个版本。我们将版本从0.37提高到0.99,以表明(在我们不寻常的版本号方案中)这是对NetworkX的一个重大更改。
为了提高性能、功能和清晰度,我们对NetworkX进行了一些重要的更改,详情如下。
0.99版需要python 2.4或更高版本。
请将评论和问题发送到Networkx讨论邮件列表。http://groups.google.com/group/networkx-discussion
基类中的更改#
最重要的变化是在图形类中。我们重新设计了graph()和digraph()类,可以选择允许边缘数据。这种变化允许图和有向图自然地表示加权图,并在边上保存任意信息。
graph和digraph都接受一个可选的参数weighted=true false。当weighted=true时,假设图具有数值边缘数据(默认值为1)。早期版本中的graph和digraph类将python none用作数据(仍允许将其用作边缘数据)。
图形和有向图类现在允许自循环。
Xgraph和Xdigraph类被删除,并替换为多图表和多图表。多图表和多图表可选地允许两个节点之间的平行(多)边。
从旧类到新类的映射如下:
- Graph -> Graph (self loops allowed now, default edge data is 1)
- DiGraph -> DiGraph (self loops allowed now, default edge data is 1)
- XGraph(multiedges=False) -> Graph
- XGraph(multiedges=True) -> MultiGraph
- XDiGraph(multiedges=False) -> DiGraph
- XDiGraph(multiedges=True) -> MultiDiGraph
改变方法#
EDGE()#
new keyword data=true false keyword决定是返回两个元组(u,v)(false)还是三个元组(u,v,d)(true)
DeleTeNo.NoDe()#
首选名称现在是remove_node()。
从()中删除节点#
不再在尝试删除不在图中的节点时引发异常。首选名称现在是remove_nodes_from()。
DeleTeEdGe()#
现在在尝试删除不在图中的边时引发异常。首选名称现在是remove_edge()。
从()中删除边#
首选名称现在是remove_edges_from()。
ADDIGEDGE()#
add_edge()方法不再直接接受边元组(u,v)。元组必须解包到各个节点中。
>>> import networkx as nx >>> u='a' >>> v='b' >>> e=(u,v) >>> G=nx.Graph()旧的
>>> # G.add_edge((u,v)) # or G.add_edge(e)新的
>>> G.add_edge(*e) # or G.add_edge(*(u,v))*运算符解包参数列表中的边元组。
添加边缘现在有一个数据关键字参数用于设置默认(数据=1)边缘数据。
>>> # G.add_edge('a','b','foo') # add edge with string "foo" as data >>> # G.add_edge(1,2,5.0) # add edge with float 5 as data
从()添加边#
现在可以使用2元组(u,v),3元组(u,v,data)的列表或迭代器,或者两者的混合。
现在有了data关键字参数(默认值1),用于设置边缘列表中任何2元组边缘的边缘数据。
HasyEdGe()#
has_edge()方法不再直接接受边元组(u,v)。元组必须解包到各个节点中。
旧的:
>>> # G.has_edge((u,v)) # or has_edge(e)新的:
>>> G.has_edge(*e) # or has_edge(*(u,v)) True*运算符解包参数列表中的边元组。
GETIGEDGE()#
现在有了关键字参数“default”来指定如果找不到边缘,返回的值。如果未指定,则在未找到边缘时引发异常。
获取边缘数据(u,v)的最快方法是使用g [u] [v] 而不是G.GET-EDGE(U,V)
极限迭代()#
degree-iter方法现在返回(node,degree)对上的迭代器。这是degree iter以前的行为(带有labels=true),还有一个新的关键字weighted=false true用于weighted degree。
子图()#
参数inplace=false_true已替换为copy=true_false。
子图不再使用关键字创建。要更改图形类型,请先复制图形,然后更改类型,或者更改类型并生成子图形。例如。
>>> G=nx.path_graph(5) >>> H=nx.DiGraph(G.subgraph([0,1])) # digraph of copy of induced subgraph
γ-GeTimeTh()#
使用g从图中获取节点邻居 [v] 现在返回字典。
>>> G=nx.path_graph(5) >>> # G[0] # {1: 1}要获取邻居列表,您可以使用该字典的键或使用
>>> G.neighbors(0) [1]这种变化允许算法通过g使用dict表示的基础dict。 [v] 以获得实质性的性能提升。警告:不应修改返回的字典,因为它可能损坏图形数据结构。抄G [v] .copy()如果要修改dict。
去除方法#
信息()#
现在函数
>>> G=nx.Graph(name='test me') >>> nx.info(G) Name: test me Type: Graph Number of nodes: 0 Number of edges: 0
NoDeId边界()#
现在函数
EdgEi边界()#
现在函数
ISX指令()#
使用定向属性
>>> G=nx.DiGraph() >>> # G.directed # True
G.OutEXEDGE()#
使用G.EdgEs()
G.In EngEs()#
使用
>>> G = nx.DiGraph() >>> R = G.reverse() >>> R.edges() []或
>>> [(v,u) for (u,v) in G.edges()] []
添加方法#
邻接表(#
返回图表的列表邻接列表表示形式。
邻接矩阵#
返回(node,adjacency)dict的迭代器 [node] )覆盖图中的所有节点。用于快速访问内部数据结构以用于内部算法。
其他可能与现有代码不兼容的地方#
进口#
一些代码模块被移到子目录中。
导入语句,例如:
import networkx.centrality
from networkx.centrality import *
可能不再有效(包括那个例子)。
要么使用
>>> import networkx # e.g. centrality functions available as networkx.fcn()
或
>>> from networkx import * # e.g. centrality functions available as fcn()
自循环#
对于图和有向图,现在允许使用自循环。这可能会影响添加要忽略的自循环的代码或算法。
使用方法
节点_与_SelfLoops()。
自循环边(
自循环数
发现任何自我循环。
拷贝#
networkx图的副本(包括使用copy()方法)现在返回该图的完整副本。这意味着复制了所有连接信息——副本中的后续更改不会更改旧图形。但是原始图和复制图中的节点键和边缘数据是指向相同数据的指针。
prepare_nbunch#
内部使用-现在称为nbunch-iter并返回迭代器。
将旧代码转换为0.99版本#
大多数情况下,您只需运行代码,而python将为更改的特性引发异常。改变的常见地方是
将xgraph()转换为graph或multigraph
将xgraph.edges()转换为graph.edges(data=true)
将一些很少使用的方法切换到属性(如定向)或函数(如节点边界)
如果您依赖于旧的默认边缘数据为“无”,则必须将其解释为“1”。
您可能还需要查看代码中可以提高速度或可读性的地方。迭代器有助于处理大型图形并通过g获取边缘数据。 [u] [v] 相当快。您还可以将g.neighbors(n)更改为g。 [n] 它将邻居节点键入的dict返回到边缘数据。它在许多方面都更快,但在更改图形时却不能很好地工作。