python绘制有向加权网络图
时间: 2023-08-09 18:06:04 浏览: 48
可以使用Python中的networkx和matplotlib库来绘制有向加权网络图。以下是一个简单的例子:
```python
import networkx as nx
import matplotlib.pyplot as plt
# 创建有向加权图
G = nx.DiGraph()
G.add_edge('A', 'B', weight=0.6)
G.add_edge('A', 'C', weight=0.2)
G.add_edge('C', 'D', weight=0.9)
G.add_edge('D', 'A', weight=0.3)
# 绘制有向加权图
pos = nx.spring_layout(G)
edges = G.edges()
weights = [G[u][v]['weight'] for u,v in edges]
nx.draw_networkx_edges(G, pos, edgelist=edges, width=weights)
nx.draw_networkx_nodes(G, pos)
nx.draw_networkx_labels(G, pos)
# 显示图像
plt.show()
```
这里用到了spring布局算法,可以根据需要选择其他布局算法。另外,可以根据实际需要调整节点和边的大小、形状、颜色等参数。
相关问题
根据矩阵绘制有向加权网络
根据矩阵绘制有向加权网络可以使用Python中的networkx和matplotlib库。以下是一个简单的例子:
```python
import networkx as nx
import matplotlib.pyplot as plt
import numpy as np
# 创建邻接矩阵
matrix = np.array([[0, 0.6, 0.2, 0],
[0, 0, 0, 0],
[0, 0, 0, 0.9],
[0.3, 0, 0, 0]])
# 创建有向加权图
G = nx.DiGraph(matrix)
# 绘制有向加权图
pos = nx.spring_layout(G)
edges = G.edges()
weights = [G[u][v]['weight'] for u,v in edges]
nx.draw_networkx_edges(G, pos, edgelist=edges, width=weights)
nx.draw_networkx_nodes(G, pos)
nx.draw_networkx_labels(G, pos)
# 显示图像
plt.show()
```
这里使用了邻接矩阵来创建有向加权图,可以根据实际需要调整矩阵的值。另外,同样可以根据需要调整节点和边的大小、形状、颜色等参数。
python根据excel表格绘制网络图
可以使用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 index, row in df.iterrows():
G.add_edge(row['Source'], row['Target'], weight=row['Weight'])
# 绘制有向加权图
pos = nx.spring_layout(G)
edges = G.edges()
weights = [G[u][v]['weight'] for u,v in edges]
nx.draw_networkx_edges(G, pos, edgelist=edges, width=weights)
nx.draw_networkx_nodes(G, pos)
nx.draw_networkx_labels(G, pos)
# 显示图像
plt.show()
```
这里假设Excel表格中有三列数据:Source、Target和Weight,分别表示边的起点、终点和权重。可以根据实际需要调整列名和读取方式。另外,同样可以根据需要调整节点和边的大小、形状、颜色等参数。