Python 无法保存在Networkx和matplotlib中生成的图形
我正在使用NetworkX和matplotlib绘制以png图像为节点的图形。这是我的密码: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)
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我没有提供这个答案。我只是为了清晰起见编辑了它。如果它不能解决你的问题,你可以忽略它或否决它。