Figures suppressed with plt.ioff show up later

huangapple go评论65阅读模式
英文:

Figures suppressed with plt.ioff show up later

问题

以下是翻译好的部分:

我有一个加载数据并制作图表的模块。每当我导入我的模块时,会运行一堆测试用例。其中一些生成图形,以便我可以检查它们的属性。我使用 plt.ioff 作为上下文管理器来抑制这些图形。但是,在交互式会话中(例如Spyder),当我导入模块并制作一些图形时,被抑制的测试用例图形会出现。

一个演示这一情况的最简示例如下:

from matplotlib import pyplot as plt

with plt.ioff():
    plt.plot([0, 1, 2], [0, 1, 4])
    
plt.figure()
plt.plot([0, 1, 2], [1, 2, 3])
plt.show()

会出现两个图形,一个对应每个 plot 命令。我在Spyder和Jupyter中都得到相同的结果。我使用的是 matplotlib 版本3.7.1。

英文:

I have a module that loads data and makes plots. I have a bunch of test cases that run whenever I import my module. Some of them generate figures just so that I can inspect their properties. I suppress these figures using plt.ioff as a context manager. But when, in an interactive session (Spyder), I import the module and make some plots, the suppressed test-case plots appear.

A minimal example that demonstrates this:

from matplotlib import pyplot as plt

with plt.ioff():
    plt.plot([0, 1, 2], [0, 1, 4])
    
plt.figure()
plt.plot([0, 1, 2], [1, 2, 3])
plt.show()

Two figures appear, one for each plot command. I get the same result in both Spyder and Jupyter. I'm using matplotlib v3.7.1.

Figures suppressed with plt.ioff show up later

答案1

得分: 0

这是对 plt.ioff 的错误使用。抑制图形的正确方式似乎是使用 plt.close

plt.plot([0, 1, 2], [0, 1, 4])
plt.close()

plt.figure()
plt.plot([0, 1, 2], [1, 2, 3])
plt.show()
英文:

This is a mistaken use of plt.ioff. The correct way to suppress a figure appears to be plt.close:

plt.plot([0, 1, 2], [0, 1, 4])
plt.close()

plt.figure()
plt.plot([0, 1, 2], [1, 2, 3])
plt.show()

huangapple
  • 本文由 发表于 2023年5月30日 03:26:28
  • 转载请务必保留本文链接:https://go.coder-hub.com/76359906.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定