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

Python 启用内联matplotlib时,在Jupyter中将matplotlib绘图绘制为PNG,python,matplotlib,jupyter-notebook,Python,Matplotlib,Jupyter Notebook,我在Jupyter中使用类似于 Matplotlib设置为内联绘制绘图 这对于输出到笔记本中的单元格很好,但我不想输出到单元格,而是只在这种情况下获取PNG数据(理想情况下是原始数据,而不是保存到文件),而不是一般情况下(通常我希望matplotlib以内联方式显示) 我不太清楚如何做到这一点;我看到的示例本质上似乎是全局的(例如,在导入pyplot之前调用matplotlib.use() 这可能吗?如何操作?关闭交互模式: plt.ioff() 要重新激活内联图像,请使用 plt.ion()

我在Jupyter中使用类似于

Matplotlib设置为内联绘制绘图

这对于输出到笔记本中的单元格很好,但我不想输出到单元格,而是只在这种情况下获取PNG数据(理想情况下是原始数据,而不是保存到文件),而不是一般情况下(通常我希望matplotlib以内联方式显示)

我不太清楚如何做到这一点;我看到的示例本质上似乎是全局的(例如,在导入pyplot之前调用matplotlib.use()


这可能吗?如何操作?

关闭交互模式:

plt.ioff()
要重新激活内联图像,请使用

plt.ion()
%matplotlib inline

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

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


关闭交互模式:

plt.ioff()
要重新激活内联图像,请使用

plt.ion()
%matplotlib inline

要将PNG图像保存为字节,但不保存为文件,请将类似于
io.BytesIO
object的文件传递给
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()

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

import matplotlib.pyplot as plt
%matplotlib inline

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

谢谢这可能是我正在寻找的答案,尽管它对我来说不起作用,因为我在一个容器中运行,没有可用的Tk,而且似乎没有其他后端可以工作。谢谢!看起来我可以在
plt.switch\u backend
中使用“pdf”或其他一些。我已经修改了我的答案——似乎不需要先调用
%matplotlib tk
。因此,如果上面的答案对您有效,您甚至不需要调用
plt.switch\u backend
。我会再添加几个曲线球-我需要将其封装在笔记本中可调用的API中。因此,调用%matplotlib magic是不可能的。然而,这是否有必要呢?离子交换/交换难道还不够吗?其次,最初的例子称为imshow,它是一个顶级函数,而不是一个方法,因此我实际上没有一个对象可以调用savefig。我希望figimage可以作为一个替代方案。我可以用
get\u ipython()来代替这个魔术。启用_matplotlib('inline')
,所以我觉得我很好。谢谢你的帮助。这可能是我正在寻找的答案,尽管它对我来说不起作用,因为我在一个容器中运行,没有可用的Tk,而且似乎没有其他后端可以工作。谢谢!看起来我可以在
plt.switch\u backend
中使用“pdf”或其他一些。我已经修改了我的答案——似乎不需要先调用
%matplotlib tk
。因此,如果上面的答案对您有效,您甚至不需要调用
plt.switch\u backend
。我会再添加几个曲线球-我需要将其封装在笔记本中可调用的API中。因此,调用%matplotlib magic是不可能的。然而,这是否有必要呢?离子交换/交换难道还不够吗?其次,最初的例子称为imshow,它是一个顶级函数,而不是一个方法,因此我实际上没有一个对象可以调用savefig。我希望figimage可以作为一个替代方案。我可以用
get\u ipython()来代替这个魔术。启用_matplotlib('inline')
,所以我觉得我很好。谢谢你的帮助。好吧,那就简单多了!那就简单多了!