只需绘制一个非常简单的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()
我的问题是边缘标签部分地落在了框外
我是使用networkx进行绘图的新手。如何向左和向右添加边距以便显示完整标签?
答案 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()