Networkx绘图标签部分位于框外

时间:2018-05-21 16:31:04

标签: python networkx

只需绘制一个非常简单的4节点网络,

import networkx as nx
import matplotlib.pyplot as plt
G = nx.Graph()
node1 = "116.251.211.248"
node2 = "5.79.100.165"
node3 = "http.anturis.com"
node4 = "s411993.ip-37-187-141.eu"
G.add_node(node1)
G.add_node(node2)
G.add_node(node3)
G.add_node(node4)
G.add_weighted_edges_from([(node1, node2, 0.742345), (node1, node3, 0.916954), (node1, node4, 0.662011), (node1, node4, 0.818537), (node2, node3, 0.947824), (node2, node4, 0.800774), (node3, node4, 0.928537)])
pos=nx.shell_layout(G)
nx.draw(G, pos, with_labels=True)
plt.show()

我的问题是边缘标签部分地落在了框外

enter image description here

我是使用networkx进行绘图的新手。如何向左和向右添加边距以便显示完整标签?

1 个答案:

答案 0 :(得分:3)

不幸的是,似乎没有固定边距的自动程序。您可以通过调用plt.xlim(xmin,xmax)手动调整边距。既然您知道节点位置(pos),那么您可以在每一侧添加额外的25%:

#Your code here....
nx.draw(G, pos, with_labels=True)
x_values, y_values = zip(*pos.values())
x_max = max(x_values)
x_min = min(x_values)
x_margin = (x_max - x_min) * 0.25
plt.xlim(x_min - x_margin, x_max + x_margin)
plt.show()

enter image description here