最近因为数学建模3天速成Python,然后做了一道网络的题,要画网络图。在网上找了一些,发现都是一些很基础的丑陋红点图,并且关于网络的一些算法也没有讲,于是自己进http://networkx.github.io/学习了一下。以下仅博主自己的总结,勿认真,有错误尽情指出,大家一起交流。
需要用到malplotlib的模块。pyplot和networkx
正文:
<强>一、malplotlib和networkx的安装(作者使用的是python2.7 pycharm) 强>
在Python的文件夹目录下脚本目录中,如果有破壳而出。exe文件,那么可以用cmd进入这个目录,然后输入的pip insall——pre matplotlib直接下载。如果有easy_install也可以输入的easy_install。如果都不行就去官网https://pypi.python.org/pypi/matplotlib/1.5.3的找对应版本下载。
至于networkx, pycharm的porject解释器里添加就好。
<强>二,创建图强>
networkx有四种图图,有向图,油印,MultiDiGraph,分别为无多重边无向图,无多重边有向图,有多重边无向图,有多重边有向图。
网络作为nx导入 G=nx.Graph() #创建空的网络图 G=nx.DiGraph () G=nx.MultiGraph () G=nx.MultiDiGraph ()
然后是加点和边了,有多种方法
G.add_node (a) #添加点 G.add_node(1,1) #用坐标来添加点 G.add_edge (x, y) #添加边,起点为x,终点为y G.add_weight_edges_from (((x, y, 1.0)]) #第三个输入量为权值 #也可以 列表=[[(“a”、“b”, 5.0), (3.0“b”、“c”), (' a ', ' c ' 1.0)] G.add_weight_edges_from([(列表)])
然后是图形的显示
#需要导入matplotlib 进口matplotlib。pyplot作为plt nx.draw (G) plt.show () >之前<强>为了让图形更精美我们详解nx.draw() 强>
nx。画(G, pos=nx.random_layout (G), node_color=b, edge_color=畆’, with_labels=True, font_size=18日node_size=20) >之前pos指的是布局主要有spring_layout, random_layout, circle_layout, shell_layout.node_color指节点颜色,有rbykw,同理edge_color。
with_labels指节点是否显示名字,尺寸表示大小,font_color表示字的颜色。
看到这里,各位应该就能画出大量网站上的基本networkx简单教程了,大概是这个样子
<强>三,绘制精美的图强>
如果你想要的图是这样的
或是这样的
还是这样的
可以继续看下去
首先要掌握两个方法
def draw_networkx_edges (G, pos机, edgelist=没有 宽度=1.0, edge_color=発”, 风格=肮烫濉? α=1.0, edge_cmap=没有 edge_vmin=没有 edge_vmax=没有 ax=没有 箭=True, 标签=没有 之前* * kwds): >旅客:图表 一个networkx图 pos:字典 将节点作为键和位置作为值的字典。 位置应该是长度为2的序列。 edgelist:边缘元组的集合 只绘制指定的边(默认=G.edges ()) 宽度:浮动或浮点数组 边线宽度(默认值=1.0) edge_color:颜色字符串或浮点数组 边缘颜色。可以是单颜色格式字符串(默认=' r '), 或者具有与edgelist相同长度的颜色序列。 如果指定了数值,它们将被映射到 颜色使用edge_cmap和edge_vmin, edge_vmax参数。 风格:字符串 边线样式(默认=肮烫濉?(实线|虚线|点线,dashdot) α:浮动 边缘透明度(默认值=1.0) edge_提出:Matplotlib色彩映射 用于映射边缘强度的色彩映射(默认值=无) edge_vmin edge_vmax:浮动 边缘色图缩放的最小值和最大值(默认值=无) ax: Matplotlib轴对象,可选 在指定的Matplotlib轴中绘制图形。 箭头:bool,可选(默认=True) 对于有向图,如果为真,则绘制箭头。 标签:图例的标签使用Python的networkx绘制精美网络图教程