【发布时间】:2014-04-07 09:18:00
【问题描述】:
我正在尝试绘制带有加权边的 networkx 图,但现在我遇到了一些困难。
正如标题所示,这张图真的很大:
节点数:103362 边数:1419671
当我尝试使用以下代码绘制此图时:
pos = nx.spring_layout(G)
nx.draw(G, node_color='#A0CBE2',edge_color='#BB0000',width=2,edge_cmap=plt.cm.Blues,with_labels=False)
plt.savefig("edge_colormap.png") # save as png
plt.show() # display
(这只是我测试功能,而不是我想要的最终结果)。我得到了错误:
ValueError: 数组太大。
它是由 spring_layout 算法触发的。知道是什么原因造成的吗?即使我使用不同的 pos 算法,我也会得到相同的错误,我该如何避免它(如果可以的话)?
另一方面,我想根据边缘的重量为边缘着色。正如您所看到的,有很多边,而且权重范围可能很广,最好的方法是什么?
感谢您的耐心等待。
根据我的评论编辑:
我正在尝试调查我拥有的数据的密度。基本上我正在查看 50,000 场比赛,每场比赛包含 10 名球员,每当两名球员在一场比赛中相遇时,我 +1 到他们之间的优势权重。这个想法是我的最终结果将向我展示我的数据集的强度。在我看来,我希望最重的边缘位于中心,当我们从中心移出时,数据的连接密度会降低。
【问题讨论】:
-
出于好奇,当您绘制具有 100k 个节点的图时,您希望看到什么?我想它会在你的屏幕上变成一大块黑色。
-
剧情没有实际用处,何必展示呢?
-
我正在尝试调查我拥有的数据的密度。基本上我正在查看 50,000 场比赛,每场比赛包含 10 名球员,每当两名球员在一场比赛中相遇时,我 +1 到他们之间的优势权重。这个想法是我的最终结果将向我展示我的数据集的强度。编辑:在我看来,我希望最重的边缘位于中心,当我们从中心移出时,数据的连接密度较低。
-
那么为什么不把节点合并在一起,减少节点的数量以便绘制呢?
-
对不起,你能说得更具体一点吗?我对编程很陌生,这是我第一次使用这个模块。我不太确定您将节点合并在一起是什么意思。
标签: python networkx large-data