如何修复使用Matplotlib绘制NetworkX图形时被切断的图形



我使用NetworkX和Matplotlib绘制节点,但这些节点有时会在图形边缘被切掉。是否设置了增加边距或防止边距被截断?

图片:在图形的边缘切断的节点

示例程序:

import networkx as nx
import matplotlib.pyplot as plt
import numpy as np
adjacency_matrix = np.array([[1,0,0,0,0,0,1,0],[0,1,1,1,1,0,0,0],[0,1,1,0,0,0,0,0],[0,1,0,1,0,0,0,0],
[0,1,0,0,1,1,0,0],[0,0,0,0,1,1,1,1],[1,0,0,0,0,1,1,0],[0,0,0,0,0,1,0,1]])
nx_graph = nx.from_numpy_matrix(adjacency_matrix)
pos = nx.networkx.kamada_kawai_layout(nx_graph)
nx.draw_networkx_nodes(nx_graph, pos, node_color="#000000", node_size=10000)
nx.draw_networkx_edges(nx_graph, pos, color="#808080", alpha=0.2, width=2.0)
plt.axis('off')
plt.tight_layout()
plt.show()

您可以缩放轴以避免节点被切断

import networkx as nx
import matplotlib.pyplot as plt
import numpy as np
adjacency_matrix = np.array([[1,0,0,0,0,0,1,0],[0,1,1,1,1,0,0,0],[0,1,1,0,0,0,0,0],[0,1,0,1,0,0,0,0],
[0,1,0,0,1,1,0,0],[0,0,0,0,1,1,1,1],[1,0,0,0,0,1,1,0],[0,0,0,0,0,1,0,1]])
nx_graph = nx.from_numpy_matrix(adjacency_matrix)
pos = nx.networkx.kamada_kawai_layout(nx_graph)
nx.draw_networkx_nodes(nx_graph, pos, node_color="#000000", node_size=10000)
nx.draw_networkx_edges(nx_graph, pos, color="#808080", alpha=0.2, width=2.0)
plt.axis('off')
axis = plt.gca()
axis.set_xlim([1.2*x for x in axis.get_xlim()])
axis.set_ylim([1.2*y for y in axis.get_ylim()])
plt.tight_layout()
plt.show()

根据您的节点大小,您可能需要更改系数(1.2(。在您给定的示例中,此值起作用。我在回答一个相关问题时提供了更多信息。

最新更新