使用networkx绘制圆形图时如何调整半径大小?

How to adjust radius size when plotting circular graph with networkx?

我需要在具有多行和多列的图形中绘制多个圆图。下面给出了一个简单的示例,其中我创建了一个包含 2 行和 2 列的子图。每个条目包含一个圆图,分别具有 10、6、8 和 8 个节点。

import networkx as nx
from matplotlib import pyplot as plt
from matplotlib.pyplot import figure
plt.rcParams["figure.figsize"] = (8,8)

n1=10
labels1={k:str(k) for k in range(n1)}
G1=nx.Graph()
G1.add_nodes_from(range(n1))

n2=6
labels2={k:str(k) for k in range(n2)}
G2=nx.Graph()
G2.add_nodes_from(range(n2))

n3=8
labels3={k:str(k) for k in range(n3)}
G3=nx.Graph()
G3.add_nodes_from(range(n3))

n4=8
labels4={k:str(k) for k in range(n4)}
G4=nx.Graph()
G4.add_nodes_from(range(n4))

fig,ax=plt.subplots(2,2)
node_size=250

nx.draw_circular(G1,labels=labels1,node_size=node_size,ax=ax[0,0],node_color='red')
nx.draw_circular(G2,labels=labels2,node_size=node_size,ax=ax[0,1],node_color='gray')
nx.draw_circular(G3,labels=labels3,node_size=node_size,ax=ax[1,0],node_color='yellow')
 nx.draw_circular(G4,labels=labels4,node_size=node_size,ax=ax[1,1],node_color='cyan')

plt.show()

结果图如下。如何缩小圆圈的半径,这在我向子图添加更多行 and/or 列时会很有用??

您可以使用 nx.draw 而不是使用 nx.draw_circular,节点位置设置为 nx.circular_layout。然后,您可以通过更改 scale 参数来调整 nx.circular_layout 的半径。最后,当您调用 plt.subplots 时,您应该将 sharexsharey 更改为 True 以确保子图具有相同的 yx 限制。

查看下面的代码:

import networkx as nx
from matplotlib import pyplot as plt
from matplotlib.pyplot import figure
plt.rcParams["figure.figsize"] = (8,8)

n1=10
labels1={k:str(k) for k in range(n1)}
G1=nx.Graph()
G1.add_nodes_from(range(n1))

n2=6
labels2={k:str(k) for k in range(n2)}
G2=nx.Graph()
G2.add_nodes_from(range(n2))

n3=8
labels3={k:str(k) for k in range(n3)}
G3=nx.Graph()
G3.add_nodes_from(range(n3))

n4=8
labels4={k:str(k) for k in range(n4)}
G4=nx.Graph()
G4.add_nodes_from(range(n4))

fig,ax=plt.subplots(2,2,sharex=True, sharey=True)
node_size=250

nx.draw(G1,pos=nx.circular_layout(G1,scale=0.2),labels=labels1,node_size=node_size,ax=ax[0,0],node_color='red')
nx.draw(G2,pos=nx.circular_layout(G2,scale=0.4),labels=labels2,node_size=node_size,ax=ax[0,1],node_color='gray')
nx.draw(G3,pos=nx.circular_layout(G3,scale=0.6),labels=labels3,node_size=node_size,ax=ax[1,0],node_color='yellow')
nx.draw(G4,pos=nx.circular_layout(G4,scale=0.8),labels=labels4,node_size=node_size,ax=ax[1,1],node_color='cyan')

plt.show()

并且输出: