gpt4 book ai didi

graph - 使节点更加分离(图形可视化)

转载 作者:行者123 更新时间:2023-12-05 03:15:43 27 4
gpt4 key购买 nike

我正在尝试根据距离矩阵绘制图形。该代码工作正常并给了我一张图片。图像很大,但所有节点都挤在一起。我想增加节点之间的空间。我希望节点更分开而不是扩大。

我试过 Graphviz NEATO,但问题是它只支持 100 个节点,因为我有 1000 个节点,它显示了 10 个集群,每个集群有 100 个节点。

我的整体代码 -

import networkx as nx
import pickle
import matplotlib.pyplot as plt
print "~~~Unpickle."
p_file = open('pickles/names')
Names = pickle.load(p_file)
p_file.close()
p_file = open('pickles/distance')
Dist = pickle.load(p_file)
p_file.close()

G = nx.Graph()

print "~~~Inserting Nodes."
for store in Names:
G.add_node(store)

print "~~~Inserting Edges."

for i in range(601):
for j in range(601):
if Names[i]!=Names[j]:
G.add_edge(Names[i],Names[j],weight=Dist[i][j])
print "~~~Drawing Graph."
nx.draw(G,pos,node_color='#A0CBE2',edge_color='none',width=1, edge_cmap=plt.cm.Blues, with_labels=False)
print "~~~Saving Figure."
plt.savefig("graph.png", dpi=500, facecolor='w', edgecolor='w',orientation='portrait', papertype=None, format=None,transparent=False, bbox_inches=None, pad_inches=0.1)
print "~~~Success!"

输出(去除边缘和标签): enter image description here

具有 600 个节点的 Graphvix NEATO 的输出 -

enter image description here

最佳答案

来自 figure文档:


图(num=无,figsize=(8、6),dpi=80,facecolor='w',edgecolor='k')

因此 figure(figsize=(10,10)) 创建了一个 10 英寸 x 10 英寸的图像,像素为 800 x 800。

如果要打印大型网络图,最简单的方法就是提高 DPI。

尝试这样的事情:


plt.figure(num=None, figsize=(10, 10), dpi=1200)。这将产生一个大图像文件。

你也可以尝试打印pdf


plt.savefig("graph.pdf")

使用此选项,最终图形将不会被栅格化。

要更改节点之间的距离,您可以缩小节点或更改布局。改变布局很难做好。

尝试布局中的缩放选项例如,


规模 = 2

将使所有节点之间的距离加倍。

所以在你的例子中,改变行


nx.绘制(G)

pos = nx.circular_layout(G, scale=2)
nx.draw(G, pos)

您还可以使用不同的布局,请参阅 documentation更多细节。

关于graph - 使节点更加分离(图形可视化),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13784806/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com