【问题标题】:Python-matplotlib: how to reshow a figure of subplots after having called plt.show()?Python-matplotlib:如何在调用 plt.show() 后重新显示子图?
【发布时间】:2020-11-20 15:35:00
【问题描述】:

我正在使用 jupyter notebook,我在 for 循环中使用 matplotlib.pyplot.subplot()。在 for 循环的同一个单元格中,我调用了plt.show() 来显示图表。但是,它们太小了,所以我希望在另一个笔记本单元格上重新绘制它们,而不必重复循环,这很耗时。

所以基本上我使用如下代码运行单元格:

import matplotlib.pyplot as plt
import numpy as np
fig, axs = plt.subplots(5,1)
for ii in range(5):
    #some time consuming operations
    axs[ii].plot(np.random.randn(10))
plt.show()

我意识到这个数字太小了,所以在随后的单元格中,我想在一个更大的数字上重新显示以前的图。由于所有信息都包含在figaxs 中,我假设我不必重复循环,而只是告诉matplotlib 再次显示其信息应该已经在axs 变量中的图。

【问题讨论】:

  • 将它们保存为图像(.png、.jpg)或 pdf,然后用 其他东西查看它们?为什么不想重复循环?
  • 正如我所说,这需要很多时间(不是这个random,原来是机器学习算法)。不想存了,想再显示一遍,加上就算存了,还是小了。
  • 是 jupyter-notebook 问题还是您需要将 matplotlib 图形大小设置为某个最小值?如果您从 shell 提示符运行,图像/绘图是否足够大?有许多关于调整/设置 jupyter-notebook 的绘图大小的 SO Q&A,你试过了吗?
  • 问题不在于图形大小,而在于如何在调用plt.show() 后重新显示子图图形。换句话说,假设你得到了一些axsfig,上面已经绘制了一些东西:如何显示这些图?
  • Matplotlib: how to show plot again? 回答你的问题了吗?

标签: python python-3.x matplotlib jupyter-notebook


【解决方案1】:

您可以从原始图形和轴中提取 matplotlib 艺术家,并使用 Matplotlib 的 oop 功能创建新的图形和轴。

这个 mre 创建了一个新的 Figure 和 Axes;从 原始 轴的每个 Line2D 获取 x 和 y 数据,并使用它与新轴进行绘图。

fig, ax = plt.subplots()  # Create a figure containing a single axes.
ax.plot([1, 2, 3, 4], [1, 4, 2, 3])  # Plot some data on the axes.
ax.plot([1, 2, 3, 4], [2,4,6,8])  # Plot some data on the axes.
plt.show()

fig1,ax1 = plt.subplots()
for line in ax.get_lines():
    x,y = line.get_data()
    ax1.plot(x,y)
fig1.show()

其信息应该已经在 axs 变量中

这些物品中确实有很多东西。看看里面有什么是有益的。试试:

>>> from pprint import pprint
>>> pprint(fig.properties())

>>> pprint(ax.properties())

>>> for line in ax.get_lines():
...     pprint(line.properties())

我建议使用Matplotlib Tutorials,有时使用 OOP 功能是真正微调绘图的最佳/最简单的方法。即使在此之后,您也需要查阅 Artists 的文档以查找特定的方法和属性。


Anatomy of a Figure

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    相关资源
    最近更新 更多