如何解决在NetworkX的节点顶部显示大小可变的圆圈
我有一个加权的networkx图。我已经计算了图上的特征向量中心值;但是,我还想在每个节点的顶部添加圆圈,以可视方式表示特定节点的特征向量值。圆的大小取决于相应节点的特征向量值。 (值越大,节点顶部的圆圈越大)。
我正在使用以下代码:
import networkx as nx
# Create a random graph
G = nx.gnp_random_graph(20,0.2)
# Calculate centrality
centrality = nx.eigenvector_centrality_numpy(G)
# Create labels dict with fixed digit format
labels = {
node: '{:.3f}'.format(centrality[node])
for node in centrality
}
# Draw the graph with labels
nx.draw(
G,with_labels=True,labels=labels,node_color='#FF0000'
)
解决方法
matplotlib.pyplot.text
和matplotlib.pyplot.Circle
都能满足您的需求。您可能需要稍作调整,但希望这是一个很好的起点:
import networkx as nx
# Create a random graph
G = nx.gnp_random_graph(20,0.2)
# Calculate centrality
centrality = nx.eigenvector_centrality_numpy(G)
# Create labels dict with fixed digit format
labels = {
node: '{:.3f}'.format(centrality[node])
for node in centrality
}
plt.figure(figsize=(20,20))
ax = plt.gca()
ax.set_aspect('equal')
pos = nx.spring_layout(G)
nx.draw(G,pos=pos,node_color='lightblue',labels=labels,with_labels=True)
for node,(x,y) in pos.items():
rad = centrality[node]*0.16
circle = plt.Circle((x,y+rad),radius=rad,color='orange')
plt.text(x-.012,y+rad,node,fontsize=16,weight="bold")
ax.add_artist(circle)
plt.show()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。