打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
NetworkX,网络结构图最强绘制工具·····
  • 前言

    • 一、Python-NetworkX包介绍
    • 二、如何快速的掌握科研绘图技巧?
    • 三、系统学习可视化
    • 四、猜你喜欢

前言

今天是我的可视化课程上线的第201天,目前学员402人,每篇原创公众号都会记录这个人数,用来督促和激励我的原创内容。目前课程的主要方向是 科研、统计、地理相关的学术性图形绘制方法,后续也会增加商务插图、机器学等、数据分析等方面的课程。

参与课程的你将获取到:学员答疑、可视化资源分享、可视化技巧补充、可视化业务代做(学员和甲方对接)、副业交流、提升认知等等。

Python-NetworkX包介绍

今天给大家介绍Python语言中绘制网络结构图的可视化拓展工具-NetworkX包。NetworkX提供了丰富的数据结构和函数,使得用户能够轻松地构建、分析和可视化复杂网络。

  • 安装 NetworkX 你可以使用 pip 命令来安装 NetworkX:
pip install networkx
  • 创建图结构

NetworkX 允许你创建不带权重或带权重的图,有向图或无向图。例如,创建一个简单的无向图:

import networkx as nx

# 创建一个无向图
G = nx.Graph()
G.add_nodes_from([1, 2, 3])
G.add_edges_from([(1, 2), (2, 3)])
  • 可视化图结构

NetworkX 提供了多种方法来可视化图结构。其中,networkx.draw() 函数是最基本的方法:

import matplotlib.pyplot as plt

# 可视化无向图
nx.draw(G, with_labels=True, node_color='skyblue', node_size=2000, font_size=20)
plt.show()
  • 自定义图的可视化

你可以自定义图的可视化,包括节点颜色、大小、标签等。例如,设置节点颜色、标签和边的样式:

# 自定义节点颜色和标签
node_color = ['red''green''blue']
labels = {1: 'Node 1', 2: 'Node 2', 3: 'Node 3'}

# 绘制自定义样式的图
nx.draw(G, with_labels=True, labels=labels, node_color=node_color, node_size=2000, font_size=20, font_color='white', edge_color='gray')
plt.show()
  • 可视化案例
import networkx as nx
import matplotlib.pyplot as plt

G = nx.Graph()
G.add_edge(1, 2)
G.add_edge(1, 3)
G.add_edge(1, 5)
G.add_edge(2, 3)
G.add_edge(3, 4)
G.add_edge(4, 5)

# explicitly set positions
pos = {1: (0, 0), 2: (-1, 0.3), 3: (2, 0.17), 4: (4, 0.255), 5: (5, 0.03)}

options = {
    'font_size': 36,
    'node_size': 3000,
    'node_color''white',
    'edgecolors''black',
    'linewidths': 5,
    'width': 5,
}
nx.draw_networkx(G, pos, **options)

# Set margins for the axes so that nodes aren't clipped
ax = plt.gca()
ax.margins(0.20)
plt.axis('off')
plt.show()
基础案例01
import matplotlib.pyplot as plt
import networkx as nx

# A rainbow color mapping using matplotlib's tableau colors
node_dist_to_color = {
    1: 'tab:red',
    2: 'tab:orange',
    3: 'tab:olive',
    4: 'tab:green',
    5: 'tab:blue',
    6: 'tab:purple',
}

# Create a complete graph with an odd number of nodes
nnodes = 13
G = nx.complete_graph(nnodes)

# A graph with (2n + 1) nodes requires n colors for the edges
n = (nnodes - 1) // 2
ndist_iter = list(range(1, n + 1))

# Take advantage of circular symmetry in determining node distances
ndist_iter += ndist_iter[::-1]


def cycle(nlist, n):
    return nlist[-n:] + nlist[:-n]


# Rotate nodes around the circle and assign colors for each edge based on
# node distance
nodes = list(G.nodes())
for i, nd in enumerate(ndist_iter):
    for u, v in zip(nodes, cycle(nodes, i + 1)):
        G[u][v]['color'] = node_dist_to_color[nd]

pos = nx.circular_layout(G)
# Create a figure with 1:1 aspect ratio to preserve the circle.
fig, ax = plt.subplots(figsize=(8, 8))
node_opts = {'node_size': 500, 'node_color''w''edgecolors''k''linewidths': 2.0}
nx.draw_networkx_nodes(G, pos, **node_opts)
nx.draw_networkx_labels(G, pos, font_size=14)
# Extract color from edge data
edge_colors = [edgedata['color'for _, _, edgedata in G.edges(data=True)]
nx.draw_networkx_edges(G, pos, width=2.0, edge_color=edge_colors)

ax.set_axis_off()
fig.tight_layout()
plt.show()
基础案例02
import matplotlib.pyplot as plt
import networkx as nx

G = nx.balanced_tree(3, 5)
pos = nx.nx_agraph.graphviz_layout(G, prog='twopi', args='')
plt.figure(figsize=(8, 8))
nx.draw(G, pos, node_size=20, alpha=0.5, node_color='blue', with_labels=False)
plt.axis('equal')
plt.show()
Circular Tree

其他案例如下:

Betweenness Centrality
Beam Search
Atlas

更多关于NetworkX包的用法和案例可参考:NetworkX包官网[1]

:本人编写的《科研论文配图绘制指南-基于Python》一书也在修正新增内容中,也会增加更多关于NetworkX包绘制科研图形的案例。

如何快速的掌握科研绘图技巧?

如何快速的掌握科研绘图技巧?可以考虑以下几点:

  • 学习基本工具和软件: 先熟悉常用的科研绘图工具和软件,例如Python或者R语言等,选择一款适合你的工具。

  • 参考教程和指南: 在线教程、视频教程和指南是学习的好资源。

  • 模仿和实践: 查看优秀的科研绘图范例,模仿它们的风格和技巧。同时,勤练手,多做练习,实践是提高技能的关键。

  • 了解图表类型和用途: 了解不同类型的科研图表,例如折线图、柱状图、散点图等,以及它们在传达信息方面的优缺点。

  • 注重细节和清晰性: 细节决定成败,确保图表的字体清晰、线条精细、标签明了,避免视觉混乱。

  • 遵循学术规范: 遵循学术期刊或机构对图表的规定和要求,包括字体大小、图表标题、坐标轴标签等。

  • 请教专家或同事: 有条件的同学可以跟随一个大佬进行系统学习,向他们寻求指导和建议,可以加速你的学习过程。

这里笔者建议,在资金允许的前提下,可以报名一个长期有效的可视化课程,别报名那种合集资料、没后期服务的课程。建议参加那种作者本人录制视频、有详细代码和数据、有后期服务、有观课平台(如果这个都没有,真的不建议大家购买,说的再好都不要购买)。如果课程持续更新的最好,最好课程本人有一定影响力(比如出书或者大V),那样自己的权益也会收到保障。感兴趣的读者可以看下我们自己的课程介绍,可视化系列课程推文。完美满足我说的那几个条件····

系统学习可视化

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
你信吗,Python NetworkX也可以绘制出高大上的网络图
科学网—复杂网络分析库NetworkX学习笔记(4):网络可视化
使用networkx及matplotlib库实现社会网络分析及可视化
数据可视化:四种关系图数据可视化的效果对比!
python复杂网络分析库NetworkX
5大必知的图算法,附Python代码实现
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服