python中,按照数值顺序生成30个节点,按照数值大小顺序将节点分配至4个数量大小随机的组,并绘制网络节点图
时间: 2024-04-15 09:27:51 浏览: 103
以下是使用Python来按数值顺序生成30个节点,并按数值大小将节点分配到4个随机大小的组,并绘制网络节点图的示例代码:
```python
import random
import networkx as nx
import matplotlib.pyplot as plt
# 生成30个随机节点
nodes = [random.randint(1, 100) for _ in range(30)]
nodes.sort() # 按数值大小排序
# 生成4个随机组的数量大小
group_sizes = [random.randint(5, 10) for _ in range(4)]
group_sizes.sort() # 按数量大小排序
# 创建一个无向图
G = nx.Graph()
# 将节点按数量分配到组中
group_index = 0
count = 0
for node in nodes:
G.add_node(node) # 添加节点到图中
G.nodes[node]['group'] = group_index # 给节点设置组属性
count += 1
if count >= group_sizes[group_index]: # 切换到下一个组
group_index += 1
count = 0
# 可视化网络节点图
pos = nx.spring_layout(G) # 设置节点布局
groups = set(nx.get_node_attributes(G, 'group').values()) # 获取所有组的标签
colors = plt.cm.tab10.colors # 颜色映射
# 根据组属性给节点着色
for group in groups:
nodes_in_group = [node for node, attr in G.nodes(data=True) if attr['group'] == group]
nx.draw_networkx_nodes(G, pos, nodelist=nodes_in_group, node_color=colors[group])
nx.draw_networkx_edges(G, pos) # 绘制边
plt.axis('off')
plt.show()
```
运行上述代码后,将生成一个包含30个节点的网络节点图,其中节点按数值大小分配到4个随机大小的组,并且节点的颜色表示其所属的组。
阅读全文