2017-12-28 26 views
0

"loadingfiles"でtkinterを使用して4つのディレクトリを選択しました。そこから、各ディレクトリーからすべてのファイルをロードします。 すべてのサブプロットをPDFに保存するにはどうすればよいですか?私は主な機能からそれをやらなければならないことは知っていますが、どうすればこのことを知ることができますか?これはどんな意味がない場合は異なる機能を使用して複数のサブプロットを1つのpdfに保存する

def loadingfiles(): 
    #loads all of the files from each directory 
    #returns Files 

def initialize_and_Calculate(Files=[],*args): 

    fig = plt.figure() 
    fig.set_size_inches(9,5,forward=True) 
    gs1=gridspec.GridSpec(1,2) 
    ax0=fig.add_subplot(gs1[0,0]) 
    ax1=fig.add_subplot(gs1[0,1]) 


    #treat x and y as a parameter within a file in a directory. Can be any numbers 


    ax0.plot(x,y,'-') 
    ax1.plot(x1,y1,'-') 

    fig.tight_layout() 



def main(): 
    Files=loadingfiles() #this loads the files in directory 
    L=len(Files) 

    for c in range (0,L): #this for loops runs the initialize_and_Calc. function per directory. 
     initialize_and_Calculate(Files[c]) #'File[0]' is directory 1. 'File[1]' is directory 2...and so on 

    plt.show() 

if __name__=="__main__": 
    main() 

、その後、どのように私は、関数の「イチジク」を渡すことができます。私が主な機能で人物を作っていたら、どうすれば機能に「fig」を渡すことができますか?

答えて

0

あなたは関数から数字を返し、リストに追加することができます。その後、リストをループして数字をpdfファイルに保存することができます。

from matplotlib import gridspec 
import matplotlib.pyplot as plt 
from matplotlib.backends.backend_pdf import PdfPages 
import numpy as np 

def loadingfiles(): 
    return range(4) 

def initialize_and_Calculate(Files=[],*args): 

    fig = plt.figure() 
    fig.set_size_inches(9,5,forward=True) 
    gs1=gridspec.GridSpec(1,2) 
    ax0=fig.add_subplot(gs1[0,0]) 
    ax1=fig.add_subplot(gs1[0,1]) 

    x,y = zip(*np.cumsum(np.random.rand(20,2), axis=0)) 

    ax0.plot(x,y,'-') 
    #ax1.plot(x1,y1,'-') 

    fig.tight_layout() 
    return fig 



def main(): 
    Files=loadingfiles() 
    figures = [] 
    for c in range (0,len(Files)): 
     figures.append(initialize_and_Calculate(Files[c])) 

    with PdfPages('multipage_pdf.pdf') as pdf: 
     for f in figures: 
      pdf.savefig(f) 

    plt.show() 

if __name__=="__main__": 
    main() 

もちろん、メイン関数のループ内で図を作成し、それをプロット関数に引数として渡すこともできます。

from matplotlib import gridspec 
import matplotlib.pyplot as plt 
from matplotlib.backends.backend_pdf import PdfPages 
import numpy as np 

def loadingfiles(): 
    return range(4) 

def initialize_and_Calculate(Files, fig ,*args): 

    fig.set_size_inches(9,5,forward=True) 
    gs1=gridspec.GridSpec(1,2) 
    ax0=fig.add_subplot(gs1[0,0]) 
    ax1=fig.add_subplot(gs1[0,1]) 

    x,y = zip(*np.cumsum(np.random.rand(20,2), axis=0)) 

    ax0.plot(x,y,'-') 
    #ax1.plot(x1,y1,'-') 

    fig.tight_layout() 


def main(): 
    Files=loadingfiles() 
    figures = [] 
    for c in range (0,len(Files)): 
     fig = plt.figure() 
     initialize_and_Calculate(Files[c], fig) 
     figures.append(fig) 

    with PdfPages('multipage_pdf.pdf') as pdf: 
     for f in figures: 
      pdf.savefig(f) 

    plt.show() 

if __name__=="__main__": 
    main() 
関連する問題