python数据可视化技巧的100个练习 -- 28. 社交网络图可视化
你是一家社交媒体公司的数据分析师。你的任务是创建一个小社区内社交联系的可视化图。这将帮助公司了解网络结构并识别关键影响者。创建一个 Python 脚本,根据以下数据生成网络图:用户:[Alice, Bob, Charlie, David, Eve]连接:[("Alice", "Bob"), ("Alice", "Charlie"), ("Bob", "David"), ("Charlie", "David"), ("David", "Eve")]该图应显示每个用户的节点和代表他们联系的边。使用适当的标签和颜色来增强可视化效果。【数据生成代码示例】
import networkx as nximport matplotlib.pyplot as pltusers = ["Alice", "Bob", "Charlie", "David", "Eve"]connections = [("Alice", "Bob"), ("Alice", "Charlie"), ("Bob", "David"), ("Charlie", "David"), ("David", "Eve")]G = nx.Graph()G.add_nodes_from(users)G.add_edges_from(connections)nx.draw(G, with_labels=True, node_color='lightblue', edge_color='gray', node_size=2000, font_size=15)plt.show()
【图表答案】
【代码答案】
import networkx as nximport matplotlib.pyplot as pltusers = ["Alice", "Bob", "Charlie", "David", "Eve"]connections = [("Alice", "Bob"), ("Alice", "Charlie"), ("Bob", "David"), ("Charlie", "David"), ("David", "Eve")]G = nx.Graph()G.add_nodes_from(users)G.add_edges_from(connections)pos = nx.spring_layout(G) # 使用 Fruchterman-Reingold 力导向算法定位节点nx.draw(G, pos, with_labels=True, node_color='lightblue', edge_color='gray', node_size=2000, font_size=15)plt.title("社交网络图")plt.show()
为了在 Python 中创建和可视化网络图,我们使用 NetworkX 库,它提供了创建、操作和研究复杂网络结构、动态和功能的工具。我们还使用 Matplotlib 进行可视化。首先,我们导入必要的库:NetworkX 和 Matplotlib。然后,我们将用户及其连接定义为列表。用户列表包含个人的姓名,连接列表包含表示他们之间关系的元组。我们使用 nx.Graph() 创建一个空的图对象 G。我们使用 G.add_nodes_from(users) 将节点(用户)添加到图中,使用 G.add_edges_from(connections) 添加边(连接)。为了以美观的方式定位节点,我们使用 nx.spring_layout(G) 函数,它应用了 Fruchterman-Reingold 力导向算法。该算法定位节点,使所有边的长度大致相等,节点均匀分布。然后,我们使用 nx.draw() 绘制图,指定节点的位置、标签、节点颜色、边颜色、节点大小和字体大小。最后,我们使用 plt.show() 显示图。这创建了社交网络的视觉表示,使识别关键连接和影响者变得更容易。【小知识】
网络图是社交网络分析(SNA)中的强大工具。它们帮助可视化网络内的关系和互动,使识别模式和关键影响者变得更容易。用于节点定位的 Fruchterman-Reingold 算法是最流行的力导向算法之一,它平衡节点之间的排斥力和吸引力,以创建美观的布局。