NetworkX 和 Matplotlib - 错位的文本标签
NetworkX and Matplotlib - Misplaced Text Labels
以下代码尝试为每个节点放置一个标签,而不是 NetworkX/Matplotlib 默认包含的节点。节点的原始位置是通过调用"nx.spring_layout(g)".
得到的
问题是,当用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')
网络绘图使用与标签相同的位置信息。
node_cfg = nx.spring_layout(g)
plt.figure(figsize=(8, 11), dpi=150)
nx.draw(g, pos=node_cfg, with_labels=True)
以下代码尝试为每个节点放置一个标签,而不是 NetworkX/Matplotlib 默认包含的节点。节点的原始位置是通过调用"nx.spring_layout(g)".
得到的问题是,当用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')
网络绘图使用与标签相同的位置信息。
node_cfg = nx.spring_layout(g)
plt.figure(figsize=(8, 11), dpi=150)
nx.draw(g, pos=node_cfg, with_labels=True)