显示选择matplotlib数字

Kar*_*esh 5 python matplotlib

我总共产生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()
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

Aje*_*ean 9

如果你真的只想绘制一些,你可以通过调用show各个数字的方法来实现,只要你使用了数字plt.figure.例如,如果你制作了fig1和fig2,你可以只显示fig2 fig2.show()而不是plt.show().但是,我同意jeanrc的评论 - 你应该在制作它们之前清除你想要的情节,而不是保留大量未显示的情节(它们仍占用记忆,你必须记得清理它们!)

另外,我强烈建议不要使用pylab,特别是反对使用"plt"作为它的导入别名."plt"传统上用于pyplot,而不是pylab.(import matplotlib.pyplot as plt).Pylab包含大量其他内容,除了交互式工作外,不鼓励使用.

最后,你在循环中覆盖"fig1".尝试将数字保存到列表而不是单个变量.

  • `fig.show()` 仅适用于交互模式。OP正在使用脚本。 (3认同)

roi*_*ere 6

根据您已经创建了 2 个数字,但您只想显示第一个:

import random

f1, a1 = plt.subplots()
a1.plot(random.sample(range(100), 20))

f2, a2 = plt.subplots()
a2.plot(random.sample(range(100), 20))
Run Code Online (Sandbox Code Playgroud)

f1.show() 不会在脚本中工作。

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

plt.close(f2)
plt.show()
Run Code Online (Sandbox Code Playgroud)

适用于大量图形的更通用的解决方案是迭代所有图形并关闭它们,除了要显示的图形:

for fig_num in plt.get_fignums():
     if figure.number != fig_num:
         plt.close(figure.number)
plt.show()
Run Code Online (Sandbox Code Playgroud)

或者,使用生成器:

[plt.close(f) for f in plt.get_fignums() if f != f1.number]
plt.show()
Run Code Online (Sandbox Code Playgroud)