启用内联 matplotlib 后,在 Jupyter 中将 matplotlib 图绘制为 PNG

Draw matplotlib plot to PNG in Jupyter when inline matplotlib is enabled

我正在使用类似于 example here using imshow

的代码在 Jupyter 中绘制混淆矩阵热图

Matplotlib 设置为内联绘图。

这适用于输出到笔记本中的单元格,但我想输出到单元格,而是获取 PNG 数据(最好是原始数据,不保存到文件中) 仅在这种情况下,一般情况下不会(一般情况下我希望 matplotlib 显示内联)。

我不太确定该怎么做;我见过的示例本质上似乎是全局的(例如,在导入 pyplot 之前调用 matplotlib.use())。

这可能吗?怎么样?

关闭交互模式:

plt.ioff()

要重新激活内联图像,请使用

plt.ion()
%matplotlib inline

要将 PNG 图像保存为字节,而不是文件,请将类似文件的 io.BytesIO 对象传递给 plt.savefig 而不是文件:

import io
data = io.BytesIO()
plt.savefig(data)

一种不显示内联图的简单方法是在单元格末尾使用 plt.close()

import matplotlib.pyplot as plt
%matplotlib inline

plt.plot([1,2,3],[1,2,3])
plt.savefig("image.png")
plt.close()