图表选择可视化指南:网络图:看结构与关系(深度版)
展示节点与边构成的关系网络,揭示中心性、社群、路径等结构特征。
分类:🕸 结构图 适用:社交/路网/依赖关系、社群发现、关键节点识别
一、这个图适合谁(适用场景)
- 社交/路网/依赖关系
- 社群发现
- 关键节点识别
二、图表结构要素
- 节点=实体
- 边=关系(可加权/有向)
- 布局算法
- 颜色=社群/属性
三、可视化的底层逻辑
网络图用"空间位置+连线"编码图结构,把抽象的"谁连谁、谁关键、怎么聚"变成可直观审视的图形。节点大小、边粗细、颜色这些都是预注意属性——读者无需刻意解读就能瞬间抓住重点(最大的节点、最粗的边、同色的簇)。但网络图的核心前提是"先正确建图":有向/无向、加权/二值一旦建错(如把关注关系当无向),"谁是关键节点"的结论会直接反转。布局算法(力导向)只是把结构"摊开",真正要传达的是拓扑特征(中心性、社群、路径),所以图后必须配文字解释——图不是装饰,而是分析结论的可视化载体。
四、视觉编码与感知推导
力导向布局:节点间斥力(库仑)+ 边引力(胡克),最小化能量
迭代至平衡,使连接紧密的节点自然聚拢——结构"自显"于布局中。
视觉编码映射(避免面积失真):节点度 编码为半径时应取 ,使面积 而非半径∝(后者会让面积∝,夸大高度数节点)。边权 映射为线宽 (线性,保证视觉宽度比=权重比)。
中心性(关键节点):度中心 、介数 、PageRank 从不同角度定义"关键",应据问题选其一高亮标注,而非全图同色无重点。
毛球控制:边数 大时图成不可读"毛球"。可设阈值只画 的强边,或对社群做折叠(先 Louvain 聚成超级节点)。可读性约束建议 。
五、怎么画(步骤)
- 选布局:力导向最常用,大图用多层级。
- 节点大小编码度/重要性,边粗细编码权重。
- 用颜色区分类别或社区。
- 标注关键节点(PageRank/介数最高)。
- 配文字解释结构含义,图不是装饰。
六、何时用 / 何时不用 / 常见丑图
- 何时用:『谁和谁连、谁关键、怎么聚』。
- 何时不用:纯数值对比 → 柱状/雷达。
- 常见丑图:节点全同色无重点、边太多成毛球。
七、常见坑
- 边过多成毛球
- 不标关键节点
- 只画不解释
八、画图自检清单
- 布局清晰
- 节点/边编码合理
- 关键节点突出
- 有结构解释
九、配套资源与搭配
- 网络/图结构问题怎么选
- Gephi 工具入门手册
- 论文图表规范与排版
本指南由 MCM520 资料站自动生成(深度版),配套论文图表规范与可视化模板可在资源页下载。
十、实战案例——Python 绘制 + 图效果
网络图展示节点与边的关系结构,适合分析社交网络、交通网络、物流配送。
案例场景:一个中心仓库向 5 个区域配送物资,边上的粗细表示配送频次。
从网络图可以看出:中心仓是核心节点(中心性最高),A 区与 E 区也有直接配送关系。
完整代码(Python + matplotlib)
import networkx as nx
import matplotlib.pyplot as plt
G = nx.Graph()
nodes = ['中心仓', 'A区', 'B区', 'C区', 'D区', 'E区']
G.add_nodes_from(nodes)
edges = [('中心仓', 'A区', 3), ('中心仓', 'B区', 2), ('中心仓', 'C区', 4),
('中心仓', 'D区', 1), ('中心仓', 'E区', 2), ('A区', 'B区', 2),
('B区', 'C区', 1), ('C区', 'D区', 3), ('D区', 'E区', 2), ('A区', 'E区', 1)]
G.add_weighted_edges_from(edges)
pos = nx.circular_layout(G)
plt.figure(figsize=(7, 5))
weights = [G[u][v]['weight'] for u, v in G.edges()]
nx.draw_networkx_edges(G, pos, width=[w * 1.5 for w in weights], alpha=0.5,
edge_color='#0ea5e9')
nx.draw_networkx_nodes(G, pos, node_size=600, node_color=['#dc2626', '#2563eb',
'#16a34a', '#f59e0b', '#7c3aed', '#0ea5e9'])
nx.draw_networkx_labels(G, pos, font_size=10, font_color='white', font_weight='bold')
plt.title('物流配送关系网络', fontsize=14, fontweight='bold')
plt.axis('off')
plt.tight_layout()
plt.show()
运行效果图
本指南由 MCM520 资料站生成,配套 Python 代码可直接运行。