用Python的networkx绘制精美网络图

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

最近因为数学建模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)

三、绘制精美的图

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): 
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 
  
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228059.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午7:55
下一篇 2026年3月16日 下午7:55


相关推荐

  • DNS 负载均衡、硬件负载均衡和软件负载均衡[通俗易懂]

    DNS 负载均衡、硬件负载均衡和软件负载均衡[通俗易懂]当单服务器的性能无法满足业务需求时,就需要设计高性能集群来提升系统整体的处理性能。高性能集群的复杂性主要体现在需要增加一个任务分配器,以及为任务选择一个合适的负载均衡器。负载均衡不只是为了计算单元的负载达到均衡状态,他依据分配算法目标,有的基于负载考虑,有的基于性能(吞吐量、响应时间)考虑,有的基于业务考虑。DNS负载均衡DNS是最简单也是最常见的负载均衡方式,一般用来实现地理级别…

    2022年7月14日
    46
  • Oracle 11g安装教程(详细步骤)

    Oracle 11g安装教程(详细步骤) 电脑装个Oracle装了三次,经历颇有点坎坷。主要这东西卸载也比较麻烦,卸载不干净重新安装还是有问题。参考了网上的一些资料,自己总结了一下。希望大家都能少猜一些坑吧!  Oracle11g安装 1.解压下载的包,然后进入包内,点击setup.exe开始安装。2.出现如下:一般把那个小对勾取消,点击下一步进行, 弹出下图这个后点‘是’3.下图后,选择创建和配置数据库,点击下一步。 4.下图,选…

    2022年7月26日
    9
  • ai聊天在线网站

    ai聊天在线网站

    2026年3月15日
    2
  • debounce函数防抖

    debounce函数防抖实现functiondebounce(callback,time){lettimer;returnfunction(){window.clearTimeout(timer)timer=window.setTimeout(function(){callback()},time)}…

    2022年6月20日
    28
  • spring注解总结_spring元注解

    spring注解总结_spring元注解Java知识学堂:https://gitee.com/zhangbw666/it-knowledge传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop、事务,这么…

    2025年6月6日
    6
  • Io 异常: Invalid number format for port number

    Io 异常: Invalid number format for port number报错信息 Causedby java sql SQLException Io 异常 Invalidnumbe jdbc driver DatabaseErro throwSqlExce DatabaseErro java 112 atoracle jdbc driver Dat

    2026年3月26日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号