简单演示

import networkx as nx

import matplotlib.pyplot as plt

# 定义空图

g = nx.Graph()

# 增加节点

g.add_node(1)

g.add_node('A')

g.add_nodes_from([2, 3])

g.add_edge(2, 3)

g.add_edges_from([(1, 2), (1, 3)])

nx.draw(g, with_labels=True)

plt.show()

一次增加多个点

import networkx as nx

import matplotlib.pyplot as plt

# 定义空图

g = nx.Graph()

h = nx.path_graph(10)

g.add_nodes_from(h)

nx.draw(g, with_labels=True)

plt.show()

有颜色的图

import networkx as nx

import matplotlib.pyplot as plt

# 定义空图

g = nx.Graph()

# 导入所有边,每条边分别用tuple表示

g.add_edges_from([(1, 2), (1, 3), (2, 4), (2, 5), (3, 6), (4, 8), (5, 8), (3, 7)])

nx.draw(g,

with_labels=True,

edge_color='b',

node_color='g',

node_size=1000)

# 如果你想保存图片,去除这句的注释

# plt.savefig('./generated_image.png')

plt.show()

import networkx as nx

import matplotlib.pyplot as plt

# 定义空图

g = nx.Graph()

g.add_cycle([1, 2, 3, 4, 5])

nx.draw(g, with_labels=True)

plt.show()

五角星

import networkx as nx

import matplotlib.pyplot as plt

G = nx.Graph()

G.add_nodes_from([1, 2, 3, 4, 5])

for i in range(5):

for j in range(i):

if (abs(i - j) not in (1, 4)):

G.add_edge(i + 1, j + 1)

nx.draw(G,

with_labels=True, # 这个选项让节点有名称

edge_color='b', # b stands for blue!

pos=nx.circular_layout(G), # 这个是选项选择点的排列方式,具体可以用 help(nx.drawing.layout) 查看

# 主要有spring_layout (default), random_layout, circle_layout, shell_layout

# 这里是环形排布,还有随机排列等其他方式

node_color='r', # r = red

node_size=1000, # 节点大小

width=3, # 边的宽度

)

plt.show()

随机绘图

import random

import networkx as nx

import matplotlib.pyplot as plt

G = nx.gnp_random_graph(10, 0.3)

for u, v, d in G.edges(data=True):

d['weight'] = random.random()

edges, weights = zip(*nx.get_edge_attributes(G, 'weight').items())

pos = nx.spring_layout(G)

nx.draw(G, pos, node_color='b', edgelist=edges, edge_color=weights, width=10.0, edge_cmap=plt.cm.Blues)

# plt.savefig('edges.png')

plt.show()

有权重的图

import matplotlib.pyplot as plt

import networkx as nx

G = nx.Graph()

G.add_edge('a', 'b', weight=0.6)

G.add_edge('a', 'c', weight=0.2)

G.add_edge('c', 'd', weight=0.1)

G.add_edge('c', 'e', weight=0.7)

G.add_edge('c', 'f', weight=0.9)

G.add_edge('a', 'd', weight=0.3)

elarge = [(u, v) for (u, v, d) in G.edges(data=True) if d['weight'] > 0.5]

esmall = [(u, v) for (u, v, d) in G.edges(data=True) if d['weight'] <= 0.5]

pos = nx.spring_layout(G) # positions for all nodes

# nodes

nx.draw_networkx_nodes(G, pos, node_size=700)

# edges

nx.draw_networkx_edges(G, pos, edgelist=elarge,

width=6)

nx.draw_networkx_edges(G, pos, edgelist=esmall,

width=6, alpha=0.5, edge_color='b', style='dashed')

# labels

nx.draw_networkx_labels(G, pos, font_size=20, font_family='sans-serif')

plt.axis('off')

plt.show()

有向图

import matplotlib.pyplot as plt

import networkx as nx

G = nx.generators.directed.random_k_out_graph(10, 3, 0.5)

pos = nx.layout.spring_layout(G)

node_sizes = [3 + 10 * i for i in range(len(G))]

M = G.number_of_edges()

edge_colors = range(2, M + 2)

edge_alphas = [(5 + i) / (M + 4) for i in range(M)]

nodes = nx.draw_networkx_nodes(G, pos, node_size=node_sizes, node_color='blue')

edges = nx.draw_networkx_edges(G, pos, node_size=node_sizes, arrowstyle='->',

arrowsize=10, edge_color=edge_colors,

edge_cmap=plt.cm.Blues, width=2)

# set alpha value for each edge

for i in range(M):

edges[i].set_alpha(edge_alphas[i])

ax = plt.gca()

ax.set_axis_off()

plt.show()

颜色渐变的节点

import matplotlib.pyplot as plt

import networkx as nx

G = nx.cycle_graph(24)

pos = nx.spring_layout(G, iterations=200)

nx.draw(G, pos, node_color=range(24), node_size=800, cmap=plt.cm.Blues)

plt.show()

颜色渐变的边

import matplotlib.pyplot as plt

import networkx as nx

G = nx.star_graph(20)

pos = nx.spring_layout(G)

colors = range(20)

nx.draw(G, pos, node_color='#A0CBE2', edge_color=colors,

width=4, edge_cmap=plt.cm.Blues, with_labels=False)

plt.show()

多层感知器

import matplotlib.pyplot as plt

import networkx as nx

left, right, bottom, top, layer_sizes = .1, .9, .1, .9, [4, 7, 7, 2]

# 网络离上下左右的距离

# layter_sizes可以自己调整

import random

G = nx.Graph()

v_spacing = (top - bottom) / float(max(layer_sizes))

h_spacing = (right - left) / float(len(layer_sizes) - 1)

node_count = 0

for i, v in enumerate(layer_sizes):

layer_top = v_spacing * (v - 1) / 2. + (top + bottom) / 2.

for j in range(v):

G.add_node(node_count, pos=(left + i * h_spacing, layer_top - j * v_spacing))

node_count += 1

# 这上面的数字调整我想了好半天,汗

for x, (left_nodes, right_nodes) in enumerate(zip(layer_sizes[:-1], layer_sizes[1:])):

for i in range(left_nodes):

for j in range(right_nodes):

G.add_edge(i + sum(layer_sizes[:x]), j + sum(layer_sizes[:x + 1]))

# 慢慢研究吧

pos = nx.get_node_attributes(G, 'pos')

# 把每个节点中的位置pos信息导出来

nx.draw(G, pos,

node_color=range(node_count),

with_labels=True,

node_size=200,

edge_color=[random.random() for i in range(len(G.edges))],

width=3,

cmap=plt.cm.Dark2, # matplotlib的调色板,可以搜搜,很多颜色呢

edge_cmap=plt.cm.Blues

)

plt.show()

python绘制社会关系网络图_Python networkx 网络图绘制相关推荐

  1. python绘制社会关系网络图_python networkx 包绘制复杂网络关系图的实现

    1. 创建一个图 import networkx as nx g = nx.Graph() g.clear() #将图上元素清空 所有的构建复杂网络图的操作基本都围绕这个g来执行. 2. 节点 节点的 ...

  2. python画统计图代码_Python使用统计函数绘制简单图形实例代码

    前言 Matplotlib 是 Python 的绘图库. 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案. 它也可以和图形工具包一起使用,如 PyQt 和 wxPython ...

  3. python怎么用散点图_Python利用matplotlib绘制散点图的新手教程

    前言 上篇文章介绍了使用matplotlib绘制折线图,参考:https://www.jb51.net/article/198991.htm,本篇文章继续介绍使用matplotlib绘制散点图. 一. ...

  4. python画有权重网络图_python networkx 根据图的权重画图实现

    首先输入边和边的权重,随后画出节点位置,根据权重大小划分实边和虚边 #coding:utf-8 #!/usr/bin/env python """ An example ...

  5. python绘制基因结构图_Python调用graphviz绘制结构化图形网络示例

    安装完成后将安装目录的bin 路径加到系统路径中,有时候需要重启电脑. 然后: pip install graphviz import graphviz as gz 有向图 dot = gz.Digr ...

  6. python怎么画形状_python – matplotlib – 如何绘制随机导向的矩形(或任何形状)?...

    好问题!我建议你不要在fill_between函数中限制自己.我总是认为深入了解事物是有益的.让我们深入研究Python绘图的本质. 因此,如果你掌握了Path,你基本上可以以任何方式绘制你喜欢的任何 ...

  7. python绘制动画示例_Python使用matplotlib绘制动画的方法

    本文实例讲述了Python使用matplotlib绘制动画的方法.分享给大家供大家参考.具体分析如下: matplotlib从1.1.0版本以后就开始支持绘制动画 下面是几个的示例: 第一个例子使用g ...

  8. python架构图教程_Python 五分钟绘制漂亮的系统架构图

    Diagrams  是一个基于Python绘制云系统架构的模块,它能够通过非常简单的描述就能可视化架构,并支持以下6个云产品的图标: AWS.Azure.GCP.K8s.阿里云 和 Oracle 云 ...

  9. python 图形库有哪些_Python基本图形绘制库——turtle

    (1).介绍 turtle库也叫海龟库,是turtle绘图体系的Python实现.turtle库是Python语言的标准库之一,是入门级的图形绘制函数库. turtle绘图体系:也叫海龟绘图系统,它是 ...

最新文章

  1. mongodb php 存储文件大小,PHP MongoDB GridFS 存储文件的方法详解
  2. 程序员涨薪必备技能(1-5年必看!!!)
  3. 实用!你不知道的小技巧,电脑快速实现屏幕长截图
  4. 用户及权限管理功能常规测试
  5. 手机开启开发模式 hbuilder无法搜索到_MIUI 12这个惊艳功能,其他手机也能一键开启...
  6. oracle中sga的合理设置,oracle学习:SGA_MAX_SIZE参数设置
  7. 频繁默认网关不可用_win10 总是默认网关不可用,怎么回事?
  8. linux 日志面试题,Linux运维 | 面试题
  9. 程序员如何在技术浪潮的更迭中保持较高的成长速度 ?
  10. kivy python 读取oracle数据库_python app (kivy)-与小型数据库连接,实现注册登录操作...
  11. 蓝绿色——三色配色篇
  12. ie 验证码图片不显示解决
  13. 书摘:别做正常的傻瓜
  14. CentOS7-命令-查看操作历史记录(history)
  15. jquery 源码分析系列1
  16. python制作图表放入excel_python写入excel(xlswriter)--生成图表
  17. 最简单的输出四位数的每个位上的数字
  18. 苹果审核团队_如何才能跟 App Store 审核团队有效沟通?
  19. 服务器光信号灯亮红灯,路由器光信号闪红灯是怎么回事
  20. JZOJ 4745. 看电影

热门文章

  1. 10大iOS开发者最喜爱的类库
  2. Javascript高级程序设计第二版第十二章--Event--笔记
  3. 成为中国特色项目经理,走上人生巅峰
  4. php codesniffer 代码规范,规范三:PHP_CodeSniffer 辅佐代码规范
  5. python 神经网络工具_神经网络15分钟入门!使用python从零开始写一个两层神经网络...
  6. java linux 服务_java项目部署Linux服务器几种启动方式总结经验
  7. scala 方法调用_Scala中的方法调用
  8. 模拟断电oracle数据不一致,Oracle数据库案例整理-Oracle系统运行时故障-断电导致数据文件状态变为RECOVER...
  9. 多线程循环输出abcc++_C ++循环| 查找输出程序| 套装2
  10. Java LocalDateTime类| 带示例的compareTo()方法