使用Python的networkx绘制精美网络图教程

  

最近因为数学建模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简单教程了,大概是这个样子

  

使用Python的networkx绘制精美网络图教程

  

<强>三,绘制精美的图

  

如果你想要的图是这样的

  

使用Python的networkx绘制精美网络图教程

  

或是这样的

  

使用Python的networkx绘制精美网络图教程

  

还是这样的

  

使用Python的networkx绘制精美网络图教程

  

使用Python的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绘制精美网络图教程