保存matplotlib / networkx图无边距

问题描述 投票:15回答:5

当我使用matplotlib画一个人物我怎么保存它无需额外的利润?通常,当我将它保存为

plt.savefig("figure.png") # or .pdf

我与一些利润率得到它:

例:

import matplotlib.pyplot as plt
import networkx as nx

G=nx.Graph()

G.add_edge('a','b',weight=1)
G.add_edge('a','c',weight=1)
G.add_edge('a','d',weight=1)
G.add_edge('a','e',weight=1)
G.add_edge('a','f',weight=1)
G.add_edge('a','g',weight=1)

pos=nx.spring_layout(G)
nx.draw_networkx_nodes(G,pos,node_size=1200,node_shape='o',node_color='0.75')

nx.draw_networkx_edges(G,pos,
                width=2,edge_color='b')

plt.axis('off')
plt.savefig("degree.png", bbox_inches="tight")
plt.show() 

更新2:

在空间设置里面的轴。这是明确的,如果我删除plt.axis('off') 所以,我认为有一些技巧与包Networkx使用。

python matplotlib networkx
5个回答
9
投票

下面添加代码保存之前,控制剧情的限制。

尝试cut不同的值,比如从1.05到1.50,直到你认为合适的。

# adjust the plot limits
cut = 1.05
xmax= cut*max(xx for xx,yy in pos.values())
ymax= cut*max(yy for xx,yy in pos.values())
plt.xlim(0,xmax)
plt.ylim(0,ymax)

9
投票

尝试plt.savefig("figure.png", bbox_inches="tight")

编辑:啊,你没有你正在使用networkx(虽然现在我看到它在标签中列出)提及。 bbox_inches="tight"是紧紧裁剪图的方式。我不知道是什么networkx在做什么,但我想它的设置是对轴增加额外的空间中的一些情节参数。你应该寻找networkx而不是matplotlib的解决方案。 (它可能是,例如,该networkx是增加了空间的轴,而不是数字里面,它是什么样子,如果你删除axis('off')调用什么样的?)


0
投票

不知道networkx的细节我不能肯定,这将工作,但在matplotlib的轴外彻底删除空格,你可以做线沿线的东西:

import matplotlib.pyplot as plt
ax = plt.axes([0, 0, 1, 1])
plt.plot(range(10))

0
投票

一个黑客一点,但如果你使用nx.draw,那么它更紧密的配合。

所以,你可以做

nx.draw(G,pos,node_size=1200,node_shape='o',node_color='0.75', edgelist = [])

刚刚绘制的节点和没有棱角。然后,它的细做

nx.draw_networkx_edges(G, pos, width=2, edge_color='b')

0
投票

使用以下命令:

plt.margins(0.0)
© www.soinside.com 2019 - 2024. All rights reserved.