当我用绘制图形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使用。
下面添加代码保存之前,控制剧情的限制。
尝试不同的价值观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)
尝试plt.savefig("figure.png", bbox_inches="tight")
编辑:啊,你没有你正在使用networkx(虽然现在我看到它在标签中列出)提及。 bbox_inches="tight"
就是紧紧裁剪图的方式。 我不知道是什么networkx在做什么,但我想它的设置是对轴增加额外的空间中的一些情节参数。 你应该寻找networkx而不是matplotlib的解决方案。 (它可能是,例如,该networkx是增加了空间的轴 ,而不是数字里面,它是什么样子,如果你删除喜欢axis('off')
电话吗?)
不知道networkx的细节我不能肯定,这将工作,但在matplotlib的轴外彻底删除空格,你可以做线沿线的东西:
import matplotlib.pyplot as plt
ax = plt.axes([0, 0, 1, 1])
plt.plot(range(10))
一个黑客一点,但如果你使用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')