4.3.5 图的布局及美化
在画图时,为了使图更具有观赏性,必须使用一些美化技巧,前文所画的图大多都使用了这些技巧中的一些,包括运用样式、运用布局等,本部分将详细地展开介绍。
1.运用样式
Network X 提供了一系列的样式参数,可以用来修饰和美化图形,以达到想要的效果,表4-1总结了常用的样式参数。
表4-1 样式参数总结

现在,就可以结合上述样式参数,使用nx.draw()画出较为美观的图。这里要补充说明的是,如果在nx.draw()添加参数alpha,改变的是整个图的透明度,如果要单独改变边的透明度,比如想要使边的透明度大小反映权重大小,可以使用指令nx.draw_networkx_edges()和nx.draw_networkx_nodes()分别来画边和节点。同样地,可以使用nx.draw_networkx_labels()单独指定标签参数并将其画出。下面给出具体的样式参数使用范例。
下面的代码给出了在ER 网络自定义地设置节点颜色,请重点关注第7行样式参数是如何使用的。

得到的结果如图4-7所示。

图4-7 在ER 网络自定义地设置节点颜色
这里还可以根据节点的值来设置节点的颜色,这在实际应用中是一个很重要的功能,下面给出示意代码,读者课根据自己的实际需求做适当修改。在下面的代码里,节点的值被人工地存放,同时还可以读进实际的数据,使节点的颜色显示物理意义,比如可以通过节点颜色的深浅反映该节点疫情的严重程度。


上述代码里用到了cmap,它是matplotlib中的一个函数,常用于改变绘制风格,或者说整个图的色系,例如,画黑白风格的图时,可将cmap设置为“gray”,翠绿色“virdidis”,在这个图中,将其设置成了“summer”。得到的图如图4-8所示。

图4-8 根据节点值设置节点颜色示例图
除此之外,还可以使节点或边的颜色效果为渐变,关键是使用range()这一方法,代码如下所示,效果图如图4-9、图4-10所示。(https://www.daowen.com)


图4-9 节点颜色渐变示例图

图4-10 边的颜色渐变示例图

2.运用布局
Network X 提供了一些布局的功能,可以指定节点排列的方式,表4-2总结了常见的布局方式。
表4-2 常见布局方式

布局通过pos参数指定,代码如下:

前文已经使用布局功能绘制过很多图,这里就不具体地给出绘图范例了,读者可以前往相关位置做深一步理解。
如果想要将生成的多个图展示在一张图片里,可以使用matplotlib提供的subplot(子图)功能,代码如下:

生成的图如图4-11所示。

图4-11 多个图展示示例图