복붙노트

[PYTHON] matplotlib에서 숫자 목록 얻기

PYTHON

matplotlib에서 숫자 목록 얻기

나는 다음과 같이하고 싶다.

pylab.figure()
pylab.plot(x)
pylab.figure()
pylab.plot(y)
# ...
for i, figure in enumerate(pylab.MagicFunctionReturnsListOfAllFigures()):
  figure.savefig('figure%d.png' % i)

pylab에서 현재 숫자의 목록을 반환하는 마법 함수는 무엇입니까?

웹 검색이 도움이되지 않았습니다 ...

해결법

  1. ==============================

    1.

    import numpy as np
    import pylab
    import matplotlib._pylab_helpers
    
    x=np.random.random((10,10))
    y=np.random.random((10,10))
    pylab.figure()
    pylab.plot(x)
    pylab.figure()
    pylab.plot(y)
    
    figures=[manager.canvas.figure
             for manager in matplotlib._pylab_helpers.Gcf.get_all_fig_managers()]
    print(figures)
    
    # [<matplotlib.figure.Figure object at 0xb788ac6c>, <matplotlib.figure.Figure object at 0xa143d0c>]
    
    for i, figure in enumerate(figures):
        figure.savefig('figure%d.png' % i)
    
  2. ==============================

    2.Pyplot에는 그림 번호 목록을 반환하는 get_fignums 메서드가 있습니다. 이것은 당신이 원하는 것을해야합니다 :

    Pyplot에는 그림 번호 목록을 반환하는 get_fignums 메서드가 있습니다. 이것은 당신이 원하는 것을해야합니다 :

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.arange(100)
    y = -x
    
    plt.figure()
    plt.plot(x)
    plt.figure()
    plt.plot(y)
    
    for i in plt.get_fignums():
        plt.figure(i)
        plt.savefig('figure%d.png' % i)
    
  3. ==============================

    3.다음 one-liner는 기존 수치 목록을 검색합니다.

    다음 one-liner는 기존 수치 목록을 검색합니다.

    import matplotlib.pyplot as plt
    figs = list(map(plt.figure, plt.get_fignums()))
    
  4. ==============================

    4.이것은 (pylab.figure 문서에서) 당신을 도울 것입니다 :

    이것은 (pylab.figure 문서에서) 당신을 도울 것입니다 :

    루프에서 수치를 호출하려면 좋은 방법은 그림 인스턴스를 목록에 저장하고 루프에서 호출하는 것입니다.

    >> f = pylab.figure()
    >> mylist.append(f)
    etc...
    >> for fig in mylist:
    >>     fig.savefig()
    
  5. ==============================

    5.figure 생성자 중 num에 수동으로 num을 지정하지 않았다고 가정하면 (그림 숫자가 모두 연속 됨) 저장하고 싶은 그림은 모두 실제로 그려져 있습니다.

    figure 생성자 중 num에 수동으로 num을 지정하지 않았다고 가정하면 (그림 숫자가 모두 연속 됨) 저장하고 싶은 그림은 모두 실제로 그려져 있습니다.

    import matplotlib.pyplot as plt
    plot_some_stuff()
    # find all figures
    figures = []
    for i in range(maximum_number_of_possible_figures):
        fig = plt.figure(i)
        if fig.axes:
            figures.append(fig)
        else:
            break
    

    새로운 빈 그림을 만드는 부작용이 있지만 지원되지 않는 인터페이스에 의존하고 싶지 않은 것이 좋습니다.

  6. ==============================

    6.내 인물의 이름은 기본 (및 설명이없는) 정수를 사용하는 대신 문자열을 사용하여 지정하는 경향이 있습니다. 그 이름을 검색하고 설명이 포함 된 파일 이름으로 그림을 저장하는 방법은 다음과 같습니다.

    내 인물의 이름은 기본 (및 설명이없는) 정수를 사용하는 대신 문자열을 사용하여 지정하는 경향이 있습니다. 그 이름을 검색하고 설명이 포함 된 파일 이름으로 그림을 저장하는 방법은 다음과 같습니다.

    import matplotlib.pyplot as plt
    figures = []
    figures.append(plt.figure(num='map'))
    # Make a bunch of figures ...
    assert figures[0].get_label() == 'map'
    
    for figure in figures:
        figure.savefig('{0}.png'.format(figure.get_label()))
    
  7. from https://stackoverflow.com/questions/3783217/get-the-list-of-figures-in-matplotlib by cc-by-sa and MIT license