2017-03-11 36 views
1

以下代码尝试为每个节点放置一个标签,除了NetworkX/Matplotlib默认包含的标签之外。通过调用“nx.spring_layout(g)”获得节点的原始位置。NetworkX和Matplotlib - 放置错位的文本标签

问题是,当用Matplotlib绘制标签时,后者是错位的,因为它可以在附图中看到。

我应该做一些不同的事情吗?

import logging 
import networkx as nx 
import matplotlib.pyplot as plt 

__log = logging.getLogger(__name__) 
g = nx.Graph() 

nodes = ['shield', 'pcb-top', 'pcb-config', 'chassis'] 
for k in nodes: 
    g.add_node(k) 

plt.figure(figsize=(8, 11), dpi=150) 
nx.draw(g, with_labels=True) 

node_cfg = nx.spring_layout(g) 
for k, node in node_cfg.items(): 
    __log.debug('node = %s @(%.6f, %.6f)', k, node[0], node[1]) 
    plt.text(node[0], node[1], k, bbox={'color': 'grey'}) 

plt.savefig('test.png') 

Misplaced Labels

回答

2

使用的网络绘图作为标签相同的位置信息。

node_cfg = nx.spring_layout(g) 
plt.figure(figsize=(8, 11), dpi=150) 
nx.draw(g, pos=node_cfg, with_labels=True)