gam*_*ter 4 python graph matplotlib networkx
给定一个现有的networkx图
import networkx as nx
import numpy as np
np.random.seed(123)
graph = nx.erdos_renyi_graph(5, 0.3, seed=123, directed=True)
nx.draw_networkx(graph)
Run Code Online (Sandbox Code Playgroud)
或者
import networkx as nx
G = nx.path_graph(4)
nx.spring_layout(G)
nx.draw_networkx(G)
Run Code Online (Sandbox Code Playgroud)
如何在其中一个节点的顶部(与节点相同的位置)绘制一个红色圆圈,例如标记为 的节点1?
为了能够绘制 networkx 图,需要为每个节点分配一个位置。默认情况下,nx.spring_layout()用于在调用 时计算仓位nx.draw_networkx(),但这些仓位不会被存储。每次绘制函数时都会重新计算它们,除非将位置显式添加为参数。
因此,您可以预先计算这些位置,然后使用它们来绘制圆:
import matplotlib.pyplot as plt
from matplotlib.colors import to_rgba
import networkx as nx
import numpy as np
np.random.seed(123)
graph = nx.erdos_renyi_graph(5, 0.3, seed=123, directed=True)
pos = nx.spring_layout(graph)
nx.draw_networkx(graph, pos=pos)
ax = plt.gca()
for node_id, color in zip([1, 4], ['crimson', 'limegreen']):
ax.add_patch(plt.Circle(pos[node_id], 0.15, facecolor=to_rgba(color, alpha=0.2), edgecolor=color))
ax.set_aspect('equal', 'datalim') # equal aspect ratio is needed to show circles undistorted
plt.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
275 次 |
| 最近记录: |