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

最近因为数学建模3天速成Python,然后做了一道网络的题,要画网络图。在网上找了一些,发现都是一些很基础的丑陋红点图,并且关于网络的一些算法也没有讲,于是自己进http://networkx.github.io/学习了一下。以下仅博主自己的总结,勿认真,有错误尽情指出,大家一起交流。

需要用到的module malplotlib.pyplot 和networkx

正文:

一、malplotlib和networkx的安装(作者使用的是python2.7 pycharm)

在Python的文件夹目录下Scripts目录中,如果有pip.exe 文件,那么可以用cmd 进入这个目录,然后输入 `pip insall --pre matplotlib`直接下载。如果有easy_install 也可以输入`easy_install。如果都不行就去官网 https://pypi.python.org/pypi/matplotlib/1.5.3`找对应版本下载。

至于networkx,pycharm的porject interpreter里添加就好。

二、创建图

networkx有四种图 Graph 、DiGraph、MultiGraph、MultiDiGraph,分别为无多重边无向图、无多重边有向图、有多重边无向图、有多重边有向图。

  import network as nx
  G = nx.Graph()#创建空的网络图
  G = nx.DiGraph()
  G = nx.MultiGraph()
  G = nx.MultiDiGraph()

然后是加点和边了,有多种方法

G.add_node('a')#添加点a
G.add_node(1,1)#用坐标来添加点
G.add_edge('x','y')#添加边,起点为x,终点为y
G.add_weight_edges_from([('x','y',1.0)])#第三个输入量为权值
#也可以
list = [[('a','b',5.0),('b','c',3.0),('a','c',1.0)]
G.add_weight_edges_from([(list)])

然后是图形的显示

#需要导入matplotlib
import matplotlib.pyplot as plt

nx.draw(G)
plt.show()

为了让图形更精美我们详解nx.draw()

nx.draw(G,pos = nx.random_layout(G),node_color = 'b',edge_color = 'r',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指节点是否显示名字,size表示大小,font_color表示字的颜色。

看到这里,各位应该就能画出大量网站上的基本networkx简单教程了,大概是这个样子

三、绘制精美的图

如果你想要的图是这样的

或是这样的

还是这样的

可以继续看下去

首先要掌握两个方法

def draw_networkx_edges(G, pos,
            edgelist=None,
            width=1.0,
            edge_color='k',
            style='solid',
            alpha=1.0,
            edge_cmap=None,
            edge_vmin=None,
            edge_vmax=None,
            ax=None,
            arrows=True,
            label=None,
            **kwds):
G:图表
  一个networkx图
pos:dictionary
  将节点作为键和位置作为值的字典。
  位置应该是长度为2的序列。

edgelist:边缘元组的集合
  只绘制指定的边(默认= G.edges())

width:float或float数组
  边线宽度(默认值= 1.0)

edge_color:颜色字符串或浮点数组
  边缘颜色。可以是单颜色格式字符串(default ='r'),
  或者具有与edgelist相同长度的颜色序列。
  如果指定了数值,它们将被映射到
  颜色使用edge_cmap和edge_vmin,edge_vmax参数。

style:string
  边线样式(默认='solid')(实线|虚线|点线,dashdot)

alpha:float
  边缘透明度(默认值= 1.0)

edge_ cmap:Matplotlib色彩映射
  用于映射边缘强度的色彩映射(默认值=无)

edge_vmin,edge_vmax:float
  边缘色图缩放的最小值和最大值(默认值=无)

ax:Matplotlib Axes对象,可选
  在指定的Matplotlib轴中绘制图形。

arrows:bool,optional(default = True)
  对于有向图,如果为真,则绘制箭头。

label:图例的标签
def draw_networkx_nodes(G, pos,
            nodelist=None,
            node_size=300,
            node_color='r',
            node_shape='o',
            alpha=1.0,
            cmap=None,
            vmin=None,
            vmax=None,
            ax=None,
            linewidths=None,
            label=None,
            **kwds):

G:图表

一个networkx图

pos:dictionary
  将节点作为键和位置作为值的字典。
  位置应该是长度为2的序列。

ax:Matplotlib Axes对象,可选
  在指定的Matplotlib轴中绘制图形。

nodelist:list,可选
  只绘制指定的节点(默认G.nodes())

node_size:标量或数组
  节点大小(默认值= 300)。如果指定了数组,它必须是
  与点头长度相同。

node_color:颜色字符串或浮点数组
  节点颜色。可以是单颜色格式字符串(default ='r'),
  或者具有与点头相同长度的颜色序列。
  如果指定了数值,它们将被映射到
  颜色使用cmap和vmin,vmax参数。看到
  matplotlib.scatter更多详细信息。

node_shape:string
  节点的形状。规格为matplotlib.scatter
  标记,'so ^> v <dph8'(默认='o')之一。

alpha:float
  节点透明度(默认值= 1.0)

cmap:Matplotlib色图
  色彩映射节点的强度(默认=无)

vmin,vmax:float
  节点色彩映射缩放的最小值和最大值(默认值=无)

线宽:[无|标量|序列]
  符号边框的线宽(默认值= 1.0)

label:[无|串]
  图例的标签

然后基本上所有networkx的超酷精美图的源码你都能快速弄懂了。

http://networkx.github.io/网络图案例源码

以上这篇使用Python的networkx绘制精美网络图教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Python Matplotlib 基于networkx画关系网络图

    前言 昨天才开始接触,鼓捣了一个下午,接下来会持续更新,如果哪里有错误的地方,望各位大佬指出,谢谢! 数据描述 两个文件,一个文件包含了网络图的节点,节点存在类别(0,1,2,3)四类,但是0类别舍去,不画出:另一个文件包含了网络图的边,数据基本特征如下:               图1中,id表示节点,b是类别:图2中,两个数字表示边连接的两个点. Networkx 安装 我的系统是Mac OS,直接在terminal输入sudo pip install networkx就可以安装,由于代码

  • python networkx 包绘制复杂网络关系图的实现

    1. 创建一个图 import networkx as nx g = nx.Graph() g.clear() #将图上元素清空 所有的构建复杂网络图的操作基本都围绕这个g来执行. 2. 节点 节点的名字可以是任意数据类型的,添加一个节点是 g.add_node(1) g.add_node("a") g.add_node("spam") 添加一组节点,就是提前构建好了一个节点列表,将其一次性加进来,这跟后边加边的操作是具有一致性的. g.add_nodes_from

  • python绘制随机网络图形示例

    如下所示: #Copyright (c)2017, 东北大学软件学院学生 # All rightsreserved #文件名称:a.py # 作 者:孔云 #问题描述: #问题分析:.代码如下: import networkx as ne #导入建网络模型包,命名ne import matplotlib.pyplot as mp #导入科学绘图包,命名mp #erdos renyi graphy rg=ne.erdos_renyi_graph(20,0.8) ps=ne.shell_layout

  • 使用python画社交网络图实例代码

    在图书馆的检索系统中,关于图书的信息里面有一个是图书相关借阅关系图.跟这个社交网络图是一样的,反映了不同对象间的关联性. 利用python画社交网络图使用的库是 networkx,更多关于networkx的介绍与使用大家可以参考这篇文章:https://www.jb51.net/article/159743.htm 下面开始本文的正文: import networkx as nx import matplotlib.pyplot as plt G = nx.Graph() G.add_edge(

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

    最近因为数学建模3天速成Python,然后做了一道网络的题,要画网络图.在网上找了一些,发现都是一些很基础的丑陋红点图,并且关于网络的一些算法也没有讲,于是自己进http://networkx.github.io/学习了一下.以下仅博主自己的总结,勿认真,有错误尽情指出,大家一起交流. 需要用到的module malplotlib.pyplot 和networkx 正文: 一.malplotlib和networkx的安装(作者使用的是python2.7 pycharm) 在Python的文件夹目

  • Python+matplotlib+numpy绘制精美的条形统计图

    本文实例主要向大家分享了一个Python+matplotlib+numpy绘制精美的条形统计图的代码,效果展示如下: 完整代码如下: import matplotlib.pyplot as plt from numpy import arange from numpy.random import rand def gbar(ax, x, y, width=0.5, bottom=0): X = [[.6, .6], [.7, .7]] for left, top in zip(x, y): ri

  • python使用matplotlib绘制折线图教程

    matplotlib简介 matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. 它的文档相当完备,并且Gallery页面中有上百幅缩略图,打开之后都有源程序.因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定. 在Linux下比较著名的数据图工具还有gnuplot,这个是免费的,Python有一个包可以调用gnuplot,但是语法比较不

  • 用Python代码来绘制彭罗斯点阵的教程

    这里是显示彭罗斯点阵的Python的脚本.是的,这是可以运行的有效Phython代码. 译注:彭罗斯点阵,物理学术语.上世纪70年代英国数学家彭罗斯第一次提出了这个概念,称为彭罗斯点阵(Pen-rose tiles). _ =\ """if! 1:"e,V=100 0,(0j-1)**-.2; v,S=.5/ V.real, [(0,0,4 *e,4*e* V)];w=1 -v"def! E(T,A, B,C):P ,Q,R=B*w+ A*v,B*w+C

  • Python使用matplotlib绘制余弦的散点图示例

    本文实例讲述了Python使用matplotlib绘制余弦的散点图.分享给大家供大家参考,具体如下: 一 代码 import numpy as np import pylab as pl a = np.arange(0,2.0*np.pi,0.1) b = np.cos(a) #绘制散点图 pl.scatter(a,b) pl.show() 二 运行结果 三 修改散点符号代码 import numpy as np import pylab as pl a = np.arange(0,2.0*np

  • Python使用matplotlib绘制多个图形单独显示的方法示例

    本文实例讲述了Python使用matplotlib绘制多个图形单独显示的方法.分享给大家供大家参考,具体如下: 一 代码 import numpy as np import matplotlib.pyplot as plt #创建自变量数组 x= np.linspace(0,2*np.pi,500) #创建函数值数组 y1 = np.sin(x) y2 = np.cos(x) y3 = np.sin(x*x) #创建图形 plt.figure(1) ''' 意思是在一个2行2列共4个子图的图中,

  • Python+Plotly绘制精美的数据分析图

    目录 1.准备 2.使用 3.保存 4.其他功能 Plotly 是目前已知的Python最强绘图库,它比上次我们讲的Echarts还强大许多许多,它的绘制通过生成一个web页面完成,并且支持调整图像大小,动态调节参数,方便许多python 网页应用的开发. 1.准备 开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装. Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(comman

  • python/Matplotlib绘制复变函数图像教程

    今天发现sympy依赖的库mpmath里也有很多数学函数,其中也有在复平面绘制二维图的函数cplot,具体例子如下 from mpmath import * def f1(z): return z def f2(z): return z**3 def f3(z): return (z**4-1)**(1/4) def f4(z): return 1/z def f5(z): return atan(z) def f6(z): return sqrt(z) cplot(f1) cplot(f2)

  • python绘制封闭多边形教程

    数据格式:(polygon.txt) 里面含有2个多边形,一行是一个点 0.085, 0.834, 0.024, 0.744, 0, 0.63, 0.024, 0.516, 0.085, 0.427, 0.5, 0.02, 0.675, 0.191, 0.795, 0.071, 0.815, 0.052, 0.835, 0.032, 0.84, 0.026, 0.844, 0.022, 0.856, 0.012, 0.871, 0.005, 0.886, 0.001, 0.903, 0, 0.8

  • python绘制动态曲线教程

    从txt种获取数据 并且通过动态曲线显示 import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation import time # Fixing random state for reproducibility np.random.seed(196) path = "feed.txt" file = open(path, 'r') data = [] for lin

随机推荐