Python 仅显示选定的或特定的matplotlib图形

Python 仅显示选定的或特定的matplotlib图形,python,matplotlib,plot,figure,Python,Matplotlib,Plot,Figure,我总共生成了50多个数字,但我不想全部显示。我想挑选出我想显示的数字。有什么办法吗 例如:我有50个绘图,它们是在程序过程中生成的。最后,当我输入plt.show()时,它会显示所有的数字。但是,我只想显示3或4个图形(但它们不是固定的,即,我可以一次绘制图1、2、3、4,另一次可以绘制图10、27、33、45)。另外,一个单独的函数正在生成这些数字,我将返回所有数字 主脚本示例: import matplotlib.pylab as plt import numpy as np from sa

我总共生成了50多个数字,但我不想全部显示。我想挑选出我想显示的数字。有什么办法吗

例如:我有50个绘图,它们是在程序过程中生成的。最后,当我输入plt.show()时,它会显示所有的数字。但是,我只想显示3或4个图形(但它们不是固定的,即,我可以一次绘制图1、2、3、4,另一次可以绘制图10、27、33、45)。另外,一个单独的函数正在生成这些数字,我将返回所有数字

主脚本示例:

import matplotlib.pylab as plt
import numpy as np
from sampleplotfn import *


A = 1
omega = np.linspace(10,35,50)

for i in range(len(omega)):
    fig1 = sinewave(A,omega[i])

plt.show()
samplepltfn.py

import numpy as np
import matplotlib.pylab as plt


def sinewave(A,omega):
      t = np.linspace(0,10,25)
      f = A*np.sin(omega*t)
      fig1 = plt.figure()
      plt.plot(f,t)
      return fig1

如果您确实只想绘制一些图形,可以通过调用单个图形的
show
方法来实现,只要您使用
plt.figure
制作了图形。例如,如果制作了图1和图2,如果调用
fig2.show()
而不是
plt.show()
,则只能显示图2。然而,我同意jeanrc的评论——你应该在制作之前清除你想要的绘图,而不是保留大量未显示的绘图(它们仍然占用内存,你必须记得清理它们!)

此外,我强烈建议不要使用pylab,特别是不要使用“plt”作为它的导入别名。“plt”通常用于pyplot,而不是pylab。(
将matplotlib.pyplot导入为plt
)。Pylab包含大量其他东西,除了交互式工作外,不鼓励使用


最后,您正在覆盖循环中的“fig1”。尝试将图形保存到列表中,而不是单个变量。

根据您创建的两个图形,但您只想显示第一个:

随机导入
f1,a1=plt.子批次()
a1.绘图(随机样本(范围(100),20))
f2,a2=plt.子批次()
a2.绘图(随机样本(范围(100),20))
f1.show()
在脚本中不起作用

正如评论中所建议的,您可以在打电话之前关闭不想看到的数字:

plt.close(f2)
plt.show()
一个适用于大量图形的更通用的解决方案是迭代所有图形并关闭它们,但要显示的图形除外:

用于plt中的fig_num.get_fignums():
如果figure.number!=图2:
plt.关闭(图号)
plt.show()
或者,使用发电机:

[plt.get_fignums()中f的plt.close(f)如果f!=f1.number]
plt.show()

在调用
plt.show()
,(
如果(…..)plt.close(图1)
)之前,您可以关闭不想看到的图形。但是为什么您需要将它们全部打印出来呢?为什么你不能在实际绘制图形之前应用你的决策标准呢?谢谢@jeanrjc!当时我的想法不太好。在绘制所有图形之前,我找到了一种只绘制所需图形的方法。
fig.show()
仅在交互模式下工作。OP正在使用一个脚本。