使用 networkX 和 matplotlib 绘制一个巨大的图形
Posted
技术标签:
【中文标题】使用 networkX 和 matplotlib 绘制一个巨大的图形【英文标题】:Drawing a huge graph with networkX and matplotlib 【发布时间】:2012-03-13 05:18:28 【问题描述】:我正在使用 networkX 和 matplotlib 绘制一个包含大约 5K 节点的图形。 matplotlib 的 GTK 窗口具有缩放和可视化图形的工具。 有什么办法,我可以保存一个放大的版本以便以后进行适当的可视化?
import matplotlib.pyplot as plt
import networkx as nx
pos=nx.spring_layout(G) #G is my graph
nx.draw(G,pos,node_color='#A0CBE2',edge_color='#BB0000',width=2,edge_cmap=plt.cm.Blues,with_labels=True)
#plt.show()
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)
【问题讨论】:
应该还有一个保存按钮......或者至少我确定其中一个前端有这个(也许是Qt的?)...... 是的,有一个保存按钮。但是,一旦您放大图表的一部分并保存它,它只会保存当前的查看区域。我想要查看整个图表。 你不能直接上dpi
以便在保存的图像中显示更多细节吗?
@JonathonReinhart 看起来不错。这种进口往往是假设的;)
@tcaswell 我想,我只是没有经常使用这些库中的任何一个,并且想确定一下。顺便说一句,networkx...哇!无论如何,我现在将删除我毫无意义的评论。
【参考方案1】:
您有两个简单的选择:
提高 DPI
plt.savefig("graph.png", dpi=1000)
(更大的图像文件大小)
另存为 PDF
plt.savefig("graph.pdf")
这是最好的选择,因为最终的图形没有被光栅化。理论上,您应该能够无限放大。
【讨论】:
@NiharSarangi 我觉得问题“保存放大版本以便以后进行适当的可视化”已得到解答。如果图像很乱,并且您想自定义networkx
,这可能会成为不同问题的素材。尝试在你的绘图命令中关闭标签 with_labels=True
-> with_labels=False
以清理它。【参考方案2】:
虽然不在 GTK 中,但您可能想查看NetworkX Viewer。
【讨论】:
【参考方案3】:你可能想看看这个:
plt.savefig("name.svg")
质量很棒。虽然 dpi 选项仍然有效。
【讨论】:
以上是关于使用 networkX 和 matplotlib 绘制一个巨大的图形的主要内容,如果未能解决你的问题,请参考以下文章
Networkx 和 Matplotlib:如何访问节点属性并将它们显示为注释
节点的 Networkx 和 matplotlib 颜色图;不同网络的相同地图