Matplotlib(pyplot) savefig 输出空白图像

新手上路,请多包涵

我正在尝试保存使用 matplotlib 制作的图;但是,图像保存为空白。

这是我的代码:

 plt.subplot(121)
plt.imshow(dataStack, cmap=mpl.cm.bone)

plt.subplot(122)
y = copy.deepcopy(tumorStack)
y = np.ma.masked_where(y == 0, y)

plt.imshow(dataStack, cmap=mpl.cm.bone)
plt.imshow(y, cmap=mpl.cm.jet_r, interpolation='nearest')

if T0 is not None:
    plt.subplot(123)
    plt.imshow(T0, cmap=mpl.cm.bone)

    #plt.subplot(124)
    #Autozoom

#else:
    #plt.subplot(124)
    #Autozoom

plt.show()
plt.draw()
plt.savefig('tessstttyyy.png', dpi=100)

而且 tessstttyyy.png 是空白的(也尝试过 .jpg)

原文由 tylerthemiler 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

首先,当 T0 is not None 时会发生什么?我会测试它,然后我会调整传递给 plt.subplot() 的值;也许尝试值 131、132 和 133,或取决于 T0 是否存在的值。

其次,调用 plt.show() 后,创建一个新图形。为了解决这个问题,你可以

  1. 在调用 plt.savefig('tessstttyyy.png', dpi=100) 之前调用 plt.show()

  2. 将图形保存在您之前 show() Figure 致电 plt.gcf() 对于“获得当前图”,您可以致电 savefig() 随时。

例如:

 fig1 = plt.gcf()
plt.show()
plt.draw()
fig1.savefig('tessstttyyy.png', dpi=100)

在您的代码中,’tesssttyyy.png’ 是空白的,因为它正在保存新图形,没有绘制任何内容。

原文由 Yann 发布,翻译遵循 CC BY-SA 3.0 许可协议

plt.show() 应该在 plt.savefig()

解释: plt.show() 清除了整个东西,所以之后的任何事情都会发生在一个新的空图形上

原文由 JAG2024 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题