Python读取Excel表中的数据并绘制成社交网络图
时间: 2024-02-16 15:04:52 浏览: 227
以下是使用Python中的pandas、networkx和matplotlib库实现从Excel表中读取数据并绘制成社交网络图的示例代码:
```python
import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt
# 读取Excel表中的数据
df = pd.read_excel("data.xlsx")
# 创建空的有向图
G = nx.DiGraph()
# 添加节点和边
for i, row in df.iterrows():
source = row["Source"]
target = row["Target"]
weight = row["Weight"]
G.add_edge(source, target, weight=weight)
# 设置节点的位置
pos = nx.spring_layout(G, k=0.5, iterations=50)
# 绘制节点和边
nx.draw_networkx_nodes(G, pos, node_color="lightblue", node_size=1000)
nx.draw_networkx_labels(G, pos, font_size=16)
nx.draw_networkx_edges(G, pos, edge_color="gray")
# 绘制边的权重
edge_labels = nx.get_edge_attributes(G, "weight")
nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_labels, font_size=12)
# 显示图像
plt.axis("off")
plt.show()
```
在上述示例中,我们首先使用pandas库读取Excel表中的数据,并创建了一个空的有向图。接着,我们遍历表格中的每一行,将“Source”和“Target”列中的节点作为有向边的起点和终点,将“Weight”列中的值作为有向边的权重,添加到有向图中。然后,我们使用`nx.spring_layout()`函数设置节点的位置,并使用`nx.draw_networkx_nodes()`、`nx.draw_networkx_labels()`和`nx.draw_networkx_edges()`函数绘制了节点和边。最后,我们使用`nx.get_edge_attributes()`函数获取边的权重,并使用`nx.draw_networkx_edge_labels()`函数绘制边的权重。你可以根据自己的需求修改节点和边的属性,以及图像的布局方式和样式。
阅读全文