想象你策划一场大型晚宴,几十位宾客之间既有老朋友,也有陌生人,还藏着微妙的关系。光靠名单你看不出整场晚宴的社交结构,于是你在白板上画了一张“关系图”:每个圆点代表一位宾客,每条连线代表他们之间的熟悉程度。当所有点和线被摆到合适的位置,你一眼就能看出——谁是全场社交中心,哪几个圈子互不来往,谁一出现就会引发连锁反应。 这张“关系图”就是图论中的图,也是数据可视化中极具魅力的领域——网络与图可视化。它把抽象的节点连接关系变成一张可以观察、探索的大网。工具 Gephi 像一个功能完备的桌面画室,用来仔细分析几万到几十万个节点;Graphistry 则像一个 GPU 驱动的炫目舞台,能渲染百万级节点和边,并支持你放大、旋转、点选、下钻。这篇文章,我会用这场“晚宴”作为引子,带你看懂图的基本元素、布局算法、两大工具和交互式探索方法,最后聊聊它在社交网络分析与网络安全中的应用逻辑。

岗位关联

学会图可视化,你就能把复杂关系变成一眼读懂的画面,这几乎是社交网络分析、安全运营与数据产品岗位的核心加分项。

目录
  1. 可视化演示
  2. 图的基本元素
  3. 布局算法
  4. Gephi桌面工具
  5. Graphistry加速
  6. 交互式探索
  7. 实战应用
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示力导向布局的物理模拟与社区聚类形成、Gephi与Graphistry的CPU/GPU渲染性能对比、以及层次环形力导向不同布局策略的图结构揭示效果。

本节配有交互动效(进入视口后自动加载,约 3KB)。

力导向布局物理模拟 节点间斥力与边引力迭代求解平衡 社区聚类结构在平衡态自然涌现 ForceAtlas2 引力斥力模拟达到能量最低态

图的基本元素

晚宴策划的第一步,是整理宾客名单。你写下每一个人的名字,然后在两两之间标注“认识”或“不认识”——这就是一张图最原始的形态:节点是名单上的一个人,边是两个人之间的熟识关系。如果两个人只是单向认识,比如“小张认识明星刘姐”,这就变成了一条有向边;如果两个人互相熟悉,就是无向边。有时你还会在边上写“交情 10 年”或“合作过 3 个项目”,这个数字就是权重,表示关系强度。

图与普通表格不同,它天然呈现的是“谁和谁相连”的结构关系。在数据分析中,图这种结构通常用邻接矩阵表示:矩阵的第 i 行第 j 列如果是 1,说明节点 i 和节点 j 有边;如果是 0,则没有边。把一个网络图存成矩阵后,很多计算都能用数学工具快速完成。

度是图论中最经典的指标,它回答的问题是:“这位宾客认识多少人?”计算方式很简单:数一数与这个节点直接相连的边的数量。

回到晚宴,如果你发现“老周”的度数最高,说明他认识的人最多,很可能是串起多个圈子的关键人物。而权重又能进一步告诉你:他那些关系是深交还是泛泛之交。节点、边、度、权重,这四个词就成了你看懂一切网络图的底层词汇。

deg⁡(v)=∑u∈VAvu\displaystyle \deg(v) = \sum_{u \in V} A_{v u}
这个公式在说:想求节点 v 的度,就把邻接矩阵中第 v 行的所有元素加起来。每个 1 代表一段关系,加起来就是关系总数。
  1. 节点集合 V公式里的 V 是所有节点的集合,相当于晚宴的全部宾客。
    V={v1,v2,…,vn}V = \{v_1, v_2, \dots, v_n\}
  2. 邻接矩阵 AA_{vu} 表示节点 v 和节点 u 是否有边,有则取 1,无则取 0。
    Avu={1如果 v 与 u 相连0否则A_{vu} = \begin{cases} 1 & \text{如果 } v \text{ 与 } u \text{ 相连} \\ 0 & \text{否则} \end{cases}
  3. 求和得度把所有 u 对应的 A_{vu} 加起来,就是节点 v 身边的关系数。
    deg⁡(v)=Av1+Av2+⋯+Avn\deg(v) = A_{v1} + A_{v2} + \cdots + A_{vn}

布局算法

宾客名单列好了,接下来是晚宴最头疼的问题:怎么安排座位?如果让关系好的人坐在一起、关系疏远的人分开坐,现场气氛自然融洽。但到底怎么摆,才让整张桌子看起来既有秩序又不拥挤?

图可视化里最著名的答案叫力导向布局。它模拟了一个物理世界:每个节点像带同种电荷的小球,两两之间都有斥力,谁都不愿靠太近;而每条边又是一根弹簧,把两个有关系的节点拉近。刚开始节点乱成一团,经过不断迭代,整个系统会慢慢进入平衡,最终形成“有边相连的靠得近、无边相连的离得远”的稳定布局。你刚才在可视化演示中看到的动画,就是这个小世界的实时写照。

除了力导向,还有两种常见布局:层次布局把节点按树状层级从上往下排列,适合展示组织架构或文件目录;圆形布局把所有节点均匀摆在圆周上,适合小规模网络快速扫描。布局调优则是对参数(弹簧长度、斥力大小、迭代次数)做微调,就像主持人不断调整座位,直到客人们聊得最自然。布局不是单纯的“画得好看”,它直接决定你能否一眼看懂关系。

F=ks(d−l0)−krd2\displaystyle F = k_s (d - l_0) - \frac{k_r}{d^2}
这个公式是力导向布局的心脏:弹簧力 k_s(d - l_0) 让有边的节点趋于固定距离 l_0,斥力 k_r/d² 让所有节点彼此推开。合力驱动节点不断移动,最终稳定在一个舒服的布局上。
  1. 弹簧力两根相连的节点像弹簧一样,太远就被拉回,太近就被推开,l_0 是理想长度。
    Fspring=ks(d−l0)F_{\text{spring}} = k_s (d - l_0)
  2. 斥力所有节点之间都有一种“离我远点”的排斥力,距离越近力量越大,它防止节点重叠。
    Frepulse=krd2F_{\text{repulse}} = \frac{k_r}{d^2}
  3. 合力叠加总受力是弹簧力和斥力的差,节点沿着合力方向移动一步。
    F=Fspring−FrepulseF = F_{\text{spring}} - F_{\text{repulse}}
  4. 迭代收敛每一轮都按合力更新位置,重复几百上千次后,弹簧与斥力达到平衡,布局完成。
    pos(t+1)=pos(t)+α F(t)\text{pos}^{(t+1)} = \text{pos}^{(t)} + \alpha \, F^{(t)}

Gephi桌面工具

晚宴策划人的桌面上,通常摊着一本厚厚的工作手册,上面密密麻麻记录着宾客信息、圈子关系、座位微调。Gephi 就是这个角色——一个专注桌面端的开源图分析工具,适合处理几万到几十万个节点的中等规模网络。

使用 Gephi 的第一步是数据导入:你可以把 CSV 表格(两列分别是源节点和目标节点)拖进去,也可以从图数据库加载邻接矩阵。导入后,Gephi 提供一个可视的布局面板,你只需选择力导向、层次或圆形等布局应用,再拖动几个参数滑块,就能马上看到网络舒展开来。

Gephi 最强大的地方是社区检测:它能把整张网络自动划分成若干个“圈子”(社区),同一个圈子的节点颜色相同。这相当于让算法替你把晚宴宾客按熟悉程度分组,免去手动猜心思。它背后的思想可以用聚类系数来衡量:某个节点身边的朋友,彼此之间是不是也互相认识?

图形摆好、社区标完,最后一步是统计输出:Gephi 的统计面板能输出度分布、平均路径长度、连通分量数量等指标,还可以把结果导出成 PDF、SVG 或 PNG,放进论文、报告甚至新闻稿里。对这份工作手册来说,你既在画画,也在做严谨的数据分析。

Cv=2Tvkv(kv−1)\displaystyle C_v = \frac{2T_v}{k_v (k_v - 1)}
聚类系数 C_v 的范围是 0 到 1。如果一个节点认识的所有朋友之间也都互相认识,C_v 就等于 1,说明这个小圈子“密度极高”。
  1. 闭合三角数 T_v分子 T_v 统计“节点 v 的朋友里,又有多少人两两相连”,每凑成一个闭合三角就 +1。
    Tv=∣{ (u,w)∈E∣v 同时连接 u,w }∣T_v = \left| \{\, (u,w) \in E \mid v \text{ 同时连接 } u, w \,\} \right|
  2. 可能的邻居对分母 k_v(k_v-1) 表示节点 v 的 k_v 个朋友之间最多能组成多少对关系,即所有可能的两两连接数量。
    max pairs=kv(kv−1)\text{max pairs} = k_v (k_v - 1)
  3. 归一化因为每个三角形被数了 2 次,所以分子要乘以 2。比值反映了局部关系网络是否“抱团”。
    Cv=2Tvkv(kv−1)C_v = \frac{2T_v}{k_v (k_v - 1)}

Graphistry加速

现在把晚宴升级成一场千人级别的行业峰会。宾客名单动辄几十万人,关系线多到密如蛛网——桌面端 Gephi 的笔记本开始力不从心,每次拖动都像卡顿的放映机。这时就该轮到Graphistry 登场:它把图可视化搬进 GPU 的世界。

Graphistry 的核心理念是GPU渲染。普通 CPU 一次只能算一个点的坐标,而 GPU 有数千个并行计算核心,可以同时处理成千上万个节点和边的颜色、位置、透明度。于是原本需要几分钟才能刷新的百万节点图,现在能在一秒内完成重绘,这就是海量节点得以交互的底层原因。

可以引入一个简单的加速比公式,直观感受 GPU 带来的提升。

有了 GPU 加速,实时交互就水到渠成:你可以拖拽整张图、旋转视角、悬浮节点看详情,画面仍然流畅得像一场灯光秀。Graphistry 还支持滤镜联动——左边面板筛选某个属性,右边图谱立即只留下符合条件的节点和边。这场千人峰会的座位图,终于变成一个可以随手拨弄的立体模型,而不是一张静态大合影。

S=T串行T并行\displaystyle S = \frac{T_{\text{串行}}}{T_{\text{并行}}}
加速比 S 等于同一批节点在串行渲染下花费的时间除以 GPU 并行渲染的时间。S 越大,说明 GPU 带来的提速越明显。
  1. 串行时间T_串行 是 CPU 一个接一个处理节点的耗时,节点越多耗时越长。
    T串行=n×toneT_{\text{串行}} = n \times t_{\text{one}}
  2. 并行时间T_并行 是 GPU 同时处理一组节点的耗时,只要核数足够,时间不会随 n 线性增长。
    T并行≈np×toneT_{\text{并行}} \approx \frac{n}{p} \times t_{\text{one}}
  3. 加速比两者相除,S 越大代表 GPU 的并行红利越高。
    S=T串行T并行S = \frac{T_{\text{串行}}}{T_{\text{并行}}}
text8 行
graph LR    A[原始网络数据] --> B[GPU 并行计算]    B --> C[坐标变换]    B --> D[颜色映射]    B --> E[碰撞检测]    C --> F[60fps 实时画面]    D --> F    E --> F

交互式探索

晚宴进行到一半,你掏出手机想确认一个问题:“到底哪群人构成了今晚最紧密的圈子?”只靠裸眼在满屏节点里找,几乎不可能。这时你需要一条交互式探索的工作流。它就像用手电筒扫过宴会厅:先粗略扫全场,再对某个角落聚焦,最后凑近了看每一桌的细节。

第一步是过滤筛选。你可以按属性筛掉不关心的节点,比如只看“合作超过 5 年”的关系,或只看度数大于 10 的宾客。过滤不是删除数据,只是把聚光灯收窄。第二步是社区聚类,让算法自动把关系紧密的节点染成同色,你会看到颜色块自然浮现——原来今晚有明显的三个“圈子”。第三步是逐层下钻:点击某个色块,只保留这个社区;再点击社区里的一个人,看他与谁相连;不断深入,直到发现最细的线索。

这个探索过程里,有一个指标帮你判断图是否“密实”——图密度。

当你把过滤、聚类、下钻、密度四个工具组合起来,就拥有了洞察发现的能力:你能快速定位意见领袖、识别高压小组、确认孤立人群。交互式探索的形式不只是“看”,更是一种追问——每一层下钻都是在向数据提一个更具体的问题,而可视化的职责是让答案以图像的方式立刻浮现。

D=2EN(N−1)\displaystyle D = \frac{2E}{N(N-1)}
图密度 D 表示实际存在的边数占最大可能边数的比例。D 越接近 1,图越密;越接近 0,图越稀疏。对于一个圈子来说,高密度意味着“内部谁都认识谁”。
  1. 实际边数E 是图中真实存在的边数,对应晚宴里实际发生的熟识关系。
    E=∣E∣E = |E|
  2. 最大边数N(N-1)/2 是 N 个节点之间最多可能有多少条无向边,即全部两两认识。
    max=N(N−1)2\text{max} = \frac{N(N-1)}{2}
  3. 密度比值把实际边数除以最大边数并乘 2,得到 0 到 1 之间的密度值。
    D=2EN(N−1)D = \frac{2E}{N(N-1)}

实战应用

晚宴散场后,策划人复盘:谁是这场聚会的灵魂人物?哪些关系虽然在名单上,现实中却完全没有互动?这类问题在真实世界里有着极其重要的回响。网络与图可视化的实战价值,正是把抽象关系变成可操作的情报。

社交网络分析是最经典的场景。媒体运营把微博转发记录建成一张图:节点是用户,边是“转发了 TA 的微博”。用 Gephi 做社区检测后,运营人员能一眼看出哪些用户构成了传播的核心圈层,再结合度数锁定“意见领袖”。相比单纯看转发量,图可视化把“谁能一呼百应”的结构原因展示得淋漓尽致。

安全威胁图谱则是 Graphistry 的主场。安全分析师把防火墙日志、域名解析记录、进程调用关系汇成图,百万级节点不再吓人。当入侵发生时,分析师沿着攻击链路逐层下钻——先定位可疑 IP,再看它连过的所有主机,最后回溯到最早的入口。整个过程每层操作都靠 GPU 渲染秒级响应,这就是“用可视化追捕网络罪犯”。

在决策支持中,分析师常用平均最短路径来衡量网络的“距离感”。

从社交传播到安全应急,从运营复盘到风险管理,图可视化把关系变成坐标,把坐标变成洞察。对 AI 从业者来说,掌握这项技能意味着你不仅懂模型,还能让数据自己“开口说话”——这是一项贯穿数据分析、算法解释与产品演示的通用能力。

L=1N(N−1)∑u≠vd(u,v)\displaystyle L = \frac{1}{N(N-1)} \sum_{u \neq v} d(u, v)
平均最短路径 L 表示任意两个节点之间最短距离的平均值。L 越小,说明网络里信息传播越“高效”;L 越大,说明派系割裂越严重。
  1. 单条最短路径d(u,v) 表示从节点 u 到节点 v 最少要经过几条边,类似“两个人隔着几个人能搭上话”。
    d(u,v)d(u,v)
  2. 遍历所有点对对每一对不同的节点计算最短距离并求和,相当于统计所有宾客之间的“社交距离”。
    ∑u≠vd(u,v)\sum_{u \neq v} d(u,v)
  3. 平均化除以总点对数 N(N-1),得到整个网络的平均“社交距离”。
    L=∑u≠vd(u,v)N(N−1)L = \frac{\sum_{u \neq v} d(u,v)}{N(N-1)}

AI 应用场景

社交网络舆情传播分析

阶段:数据可视化与结果解读

解决的问题:传统舆情分析只统计转发量、评论数,看不到“谁在真正推动传播”。品牌方想找到核心传播者,却只能靠人工翻评论,效率低且容易漏掉关键人物。图可视化将转发关系建图后,通过社区聚类和度数筛选,快速定位“意见领袖”和“传播枢纽”。

具体案例:某消费品牌监测一条热门微博的 10 万条转发记录,用 Gephi 把转发关系建成图。社区检测发现三个不同的话题圈层,其中一个圈层的一位数码博主度数为 1800,远高于均值。品牌方立即与这位博主合作,后续活动互动量提升 40%。

网络安全威胁溯源

阶段:异常检测后的关联分析

解决的问题:安全告警每天产生海量日志,单个日志看不出攻击路径。分析人员需要一种方式把告警“串起来”,看清攻击者从哪进来、在哪些主机上落脚、最终到达哪台服务器。

具体案例:某大型企业的安全运营中心(SOC)接入 Graphistry,把防火墙日志、DNS 请求和主机登录记录合并成图数据。某日出现异常外联时,分析师按时间过滤 + 下钻,3 分钟内定位到攻击链:钓鱼邮件→员工电脑→内部跳板机→数据库服务器。过去靠人工查日志需要 3 小时。

金融反欺诈资金链路分析

阶段:特征工程与模式识别

解决的问题:欺诈团伙通常用多级账户转账洗钱,单看账户流水很难发现异常。图可视化把账户作为节点、转账作为有向边,配合 GPU 实时渲染,分析师可以沿着资金路径逐层追踪,发现“资金汇聚到少数账户”的欺诈特征。

具体案例:某支付平台用 Graphistry 展示一周内 200 万笔转账关系。分析师通过“滤掉金额小于 100 元的边”,仅保留大额转账,立刻看到 12 个账户呈现放射状集中收款模式,与已知欺诈团伙特征高度吻合,最终冻结涉及 500 万元的异常交易。

Python 演示

python71 行
import mathimport random  def build_guest_graph():    """8 位宾客的熟悉关系:节点是名字,边是熟悉程度"""    nodes = ['林', '陈', '王', '李', '张', '刘', '赵', '周']    edges = [('林', '陈'), ('林', '王'), ('林', '赵'), ('陈', '周'),             ('陈', '张'), ('王', '李'), ('张', '刘'), ('李', '刘'),             ('赵', '周')]    return nodes, edges  def force_layout(nodes, edges, steps=1000, learn=0.03):    """让相互熟悉的人靠近,让陌生的人保持距离"""    repel = 2.0    spring = 0.05    rest = 1.6    pos = {n: [random.uniform(-3, 3), random.uniform(-3, 3)] for n in nodes}    n = len(nodes)    for _ in range(steps):        force = {name: [0.0, 0.0] for name in nodes}        for i in range(n):            for j in range(i + 1, n):                a, b = nodes[i], nodes[j]                dx = pos[a][0] - pos[b][0]                dy = pos[a][1] - pos[b][1]                dist = math.sqrt(dx * dx + dy * dy) + 1e-6                fx = repel * dx / (dist * dist * dist)                fy = repel * dy / (dist * dist * dist)                force[a][0] += fx                force[a][1] += fy                force[b][0] -= fx                force[b][1] -= fy        for a, b in edges:            dx = pos[b][0] - pos[a][0]            dy = pos[b][1] - pos[a][1]            dist = math.sqrt(dx * dx + dy * dy) + 1e-6            fx = spring * (dist - rest) * dx / dist            fy = spring * (dist - rest) * dy / dist            force[a][0] += fx            force[a][1] += fy            force[b][0] -= fx            force[b][1] -= fy        for name in nodes:            pos[name][0] += learn * force[name][0]            pos[name][1] += learn * force[name][1]    return pos  def render_ascii(pos, width=32, height=14):    """把布局结果画成一张终端关系图"""    xs = [p[0] for p in pos.values()]    ys = [p[1] for p in pos.values()]    x0, x1 = min(xs), max(xs)    y0, y1 = min(ys), max(ys)    grid = [[' ' for _ in range(width)] for _ in range(height)]    for name, (x, y) in pos.items():        cx = int((x - x0) / (x1 - x0 + 1e-6) * (width - 1))        cy = int((y - y0) / (y1 - y0 + 1e-6) * (height - 1))        grid[cy][cx] = name[0]    for row in grid:        print(''.join(row))  if __name__ == '__main__':    random.seed(42)    nodes, edges = build_guest_graph()    pos = force_layout(nodes, edges)    print('力导向布局后的宾客关系图:')    render_ascii(pos)
目的:模拟 Gephi 的力导向布局过程,把一个 8 人的社交小网络绘制成终端字符图,直观展示“有关系的人靠在一起”的效果。
  1. pos = {n: [random.uniform(-3, 3), random.uniform(-3, 3)] for n in nodes}给每位宾客随机分配一个初始坐标,相当于晚宴开始时客人们随意站着。
  2. fx = repel * dx / (dist * dist * dist)计算两两之间的斥力,距离越近推力越大,防止全部挤成一团。
  3. fx = spring * (dist - rest) * dx / dist计算弹簧拉力,让有关系的节点趋于理想距离 rest。
  4. pos[name][0] += learn * force[name][0]沿着合力方向微调坐标,迭代多次后布局收敛。
  5. grid[cy][cx] = name[0]把每个节点的名字首字映射到终端字符网格上,形成 ASCII 关系图。
  6. random.seed(42)固定随机种子,保证每次运行生成相同的初始布局,结果可复现。

常见误区

误区我看到一张用渐变色、大节点画得特别精致的网络图,就觉得这个可视化很专业、很可信,以为“好看 = 准确”。

正解可视化最重要的任务是忠实传达关系,美观只是辅助。同样是同一份数据,力导向布局可能因为初始随机位置不同,长成差别很大的形态。如果边过度重叠、节点标签互相遮挡,哪怕配色再炫,也可能误导读者。正确的做法是先检查节点位置是否稳定、边是否清晰、标签是否可读,再考虑美化。

为何常见:人眼天然偏爱“画面精美”的图,而“好看”这个主观感受很容易掩盖底层的布局质量问题。

误区看到一个大圆点就认定它是核心人物,以为度数最高就一定是网络中心,直接写进汇报材料里。

正解度数只代表直接连接的数量,并不等于“中心性”。一个人认识很多普通人,未必是连接不同圈子的桥梁;真正的关键枢纽往往由介数中心性、紧密度等更复杂的指标衡量。必须结合全局结构判断,而不能只看节点大小。

为何常见:很多可视化工具把节点大小映射到度数,大圆点最抢眼,人脑很容易把“视觉权重”误解为“结构权重”。

误区Graphistry 用 GPU 渲染,听起来只是把图片放大得更清晰,让节点看起来更细腻。

正解GPU 加速的本质是并行计算——成千上万个节点和边的坐标、颜色、碰撞检测同时被处理,让 100 万节点的图也能在 60fps 下旋转缩放。它不是“放大镜”,而是把计算量从串行变成并行的引擎,属于架构级别的优化。

为何常见:我们习惯把渲染理解为“画图”,忽视了 GPU 本身就是一颗并行处理器,于是把性能提升误当成画质提升。

误区在 Graphistry 或 Gephi 里点了一下过滤,看到节点消失了,就以为这些数据已经被我删掉了,还担心会影响原始文件。

正解过滤只是临时隐藏视图中不满足条件的节点和边,底层数据完整保留,随时可以撤销或调整条件。它是视角切换,不是破坏性编辑。比如你筛掉金额小于 100 的转账,数据还在,只是画面不再显示它们。

为何常见:可视化界面上的“消失”效果和数据库的 DELETE 操作在观感上太像了,初学者很难区分“视图”与“数据”两个层面。

面试题

Q1. 图可视化中,一个圆点加一条线通常表示什么?

单选题 · easy

  • A.一条文件记录
  • B.一个节点一条边← 正确答案
  • C.一幅图像色彩
  • D.一个表格字段

答案:B。圆点是节点(entity),线是边(relationship),两者是构成图的最小单位。文件记录、图像色彩、表格字段都是其他数据模型的术语,不属于图结构。

Q2. 一个节点的“度”指的是什么?

单选题 · easy

  • A.节点画的粗细
  • B.颜色亮暗程度
  • C.相连边的数量← 正确答案
  • D.标签文字的多少

答案:C。度是图论中衡量节点连接数量的指标,等于与该节点直接相连的边的总数。它和视觉效果(粗细、颜色、文字)无关,是一个纯结构属性。

Q3. 力导向布局的核心思想是什么?

单选题 · mid

  • A.按字母顺序排列
  • B.相连吸引不相连排斥← 正确答案
  • C.让所有节点匀速旋转
  • D.把节点画成最大形状

答案:B。力导向布局模拟物理世界:有边相连的节点像被弹簧拉近,所有节点之间又有斥力互相推开,迭代后达到平衡。旋转和形状不是布局算法的目的。

Q4. 在 Gephi 中,“社区检测”主要用来做什么?

单选题 · mid

  • A.把图片转成视频
  • B.找出自然聚成的圈子← 正确答案
  • C.删除全部的孤立节点
  • D.更换画布背景颜色

答案:B。社区检测通过分析边密度,自动把联系紧密的节点划分到同一组,类似在晚宴中发现“哪些人自然聚成一桌”。它不是图像处理功能,也不删除数据。

Q5. Graphistry 为什么能渲染百万级节点?

单选题 · mid

  • A.把节点画得更小
  • B.用GPU并行渲染← 正确答案
  • C.把数据存到手机
  • D.只在静态图上展示

答案:B。GPU 有数千个并行核心,可同时处理海量节点的坐标、颜色和碰撞检测,因此百万节点也能流畅交互。把节点缩小、数据存储位置、静态展示都无法从根本上解决性能瓶颈。

Q6. “下钻”在图可视化中指的是什么?

单选题 · mid

  • A.把整张图全部缩小
  • B.从全局聚焦到局部← 正确答案
  • C.把有向边变成无向
  • D.增加更多新节点

答案:B。下钻是交互探索的核心动作:先看整体,再点击某个社区或节点,只展示与该节点相关的子图,层层深入细节。它不是缩小全图,也不是修改边的方向或添加节点。

Q7. 邻接矩阵 A 中,A_ij = 1 通常表示什么?

单选题 · hard

  • A.i与j之间存在边← 正确答案
  • B.i与j的编号相同
  • C.i绘制在j的上方
  • D.i与j的颜色相同

答案:A。邻接矩阵的行和列都对应节点,A_ij = 1 表示节点 i 到节点 j 之间有边。它是矩阵化的图表示,与节点的编号、绘制位置和颜色无关,后三者是可视化渲染属性。

Q8. 图可视化的常见布局有哪些?

多选题 · mid

  • A.力导向布局← 正确答案
  • B.层次布局← 正确答案
  • C.瀑布布局
  • D.圆形布局← 正确答案

答案:ABD。力导向、层次、圆形是三种常见布局方法。瀑布布局常见于财务图表,不属于网络图布局。层次布局适合树状结构,圆形布局适合小规模网络快速预览。

Q9. Graphistry 的交互探索能力支持哪些操作?

多选题 · hard

  • A.过滤筛选← 正确答案
  • B.逐层下钻← 正确答案
  • C.自动生成
  • D.实时缩放← 正确答案

答案:ABD。Graphistry 支持属性过滤、点击下钻、旋转缩放等实时交互,这些操作依赖 GPU 加速保证流畅。自动生成幻灯片不是 Graphistry 的核心功能。

Q10. 关于“度”与“权重”,下列说法正确的是?

多选题 · extreme

  • A.度数高即中心
  • B.权重代表强度← 正确答案
  • C.度是矩阵行和← 正确答案
  • D.邻居数就是度← 正确答案

答案:BCD。权重表示连接强度;无向图中度等于邻接矩阵对应行之和;度本质上就是邻居数量。度数高不等于中心性,真正判断中心需要介数中心性等更全局的指标,所以 A 错。