Python 无法保存在Networkx和matplotlib中生成的图形

Python 无法保存在Networkx和matplotlib中生成的图形,python,matplotlib,networkx,Python,Matplotlib,Networkx,我正在使用NetworkX和matplotlib绘制以png图像为节点的图形。这是我的密码: import networkx as nx import matplotlib.pyplot as plt G = nx.DiGraph() #DRAWING EDGES ON AXIS G.add_edges_from(([1,2],[3,4],[5,6],[7,8])) pos = nx.circular_layout(G) fig = plt.figure(figsize=(20, 20)

我正在使用NetworkX和matplotlib绘制以png图像为节点的图形。这是我的密码:

import networkx as nx 
import matplotlib.pyplot as plt 
G = nx.DiGraph()

#DRAWING EDGES ON AXIS 
G.add_edges_from(([1,2],[3,4],[5,6],[7,8]))
pos = nx.circular_layout(G)
fig = plt.figure(figsize=(20, 20)) 
ax = plt.axes([0, 0, 15, 15])
ax.set_aspect('equal') 
nx.draw_networkx_edges(G, pos, ax=ax, arrows=True)

#TRANSFORMING COORDINATES 
trans = ax.transData.transform 
trans2 = fig.transFigure.inverted().transform 

#PUTTING IMAGE INSTEAD OF NODES 
size = 0.2 
p2 = size / 2.0 

for n in G:
   xx, yy = trans(pos[n]) 
   xa, ya = trans2((xx, yy)) 
   a = plt.axes([xa - p2, ya - p2, size, size])
   a.set_aspect('equal')
   a.imshow(image, aspect='auto')
   a.axis('off')

plt.savefig('save.png') 
plt.show()

Jupyter笔记本显示图形。但是,当我使用Pycharm时,它会显示空白的白色数字。通过plt.savefig()保存也不起作用。我尝试在plt.savefig()中使用dpi,但没有改变任何东西。如果有任何线索,我将不胜感激。

我以前也遇到过类似的情况。你能试试这个吗

import matplotlib 
matplotlib.use('Agg')
import matplotlib.pyplot as plt

plt.axes
需要一个矩形,其坐标表示为图形画布的一小部分。给定
figsize=(20,20)

ax = plt.axes([0, 0, 15, 15])
应该是

ax = plt.axes([0, 0, 0.75, 0.75])

保存时添加
bbox\u inches='tight'
解决了以下问题:

plt.savefig('save.png',bbox_inches='tight')
此参数会在输出图像周围剪切不必要的空白边距。没有它,只保存整个图形的一部分

关于如何在matplotlib中保存纯图像的有价值的讨论如下:

可以在轴内找到图像的bbox(使用 获取_window_extent),并使用bbox_inches参数仅保存 图像的那部分


你能重新格式化你的代码吗?缩进4个空格表示这是代码。使用“>”告诉stackoverflow这是一个报价。谢谢jdv,我试过了,但没有任何改变。另外,显示图形也不是那么重要,对我来说至关重要的是保存它。@ElaSz我没有提供这个答案。我只是为了清晰起见编辑了它。如果它不能解决你的问题,你可以忽略它或否决它。