1. ホーム
  2. python

[解決済み] Python 2.7でpylabを関数レベルでインポートするには、どのような方法が望ましいですか?

2022-02-19 02:08:07

質問

データセットの時間領域の履歴と、高速フーリエ変換後のデータセットの周波数領域の応答をプロットするために使用できる、比較的簡単な関数をpythonで書きました。 この関数では、コマンド from pylab import * を使えば、必要な機能をすべて取り込むことができます。 しかし、プロットの作成には成功したものの、次のような警告が表示されます。

import * はモジュール・レベルでのみ許可されます。

そのため、コマンドを使用する場合は from pylab import * が望ましい方法ではない場合、どのようにしたらパイラボから必要なすべての機能を適切に読み込むことができるのでしょうか? コードは以下に添付します。 また、関数が終了した後、図を閉じる方法はありますか? plt.close() というのは、サブプロットでは認識されないのでしょうか?

def Time_Domain_Plot(Directory,Title,X_Label,Y_Label,X_Data,Y_Data):
    # Directory: The path length to the directory where the output file is 
    #            to be stored
    # Title:     The name of the output plot, which should end with .eps or .png
    # X_Label:   The X axis label
    # Y_Label:   The Y axis label
    # X_Data:    X axis data points (usually time at which Yaxis data was acquired
    # Y_Data:    Y axis data points, usually amplitude

    from pylab import *
    from matplotlib import rcParams
    rcParams.update({'figure.autolayout': True})
    Output_Location = Directory.rstrip() + Title.rstrip()
    fig,plt = plt.subplots()
    matplotlib.rc('xtick',labelsize=18)
    matplotlib.rc('ytick',labelsize=18)
    plt.set_xlabel(X_Label,fontsize=18)
    plt.set_ylabel(Y_Label,fontsize=18)
    plt.plot(X_Data,Y_Data,color='red')
    fig.savefig(Output_Location)
    plt.clear()

解決方法は?

からの matplotlibのドキュメント :

pylab を一括してインポートする便利なモジュールです。 matplotlib.pyplot (プロット用)と numpy (数学と配列の操作用)を単一の名前空間で使用することができます。多くの例では pylab しかし、これはもはや推奨されない。

をインポートしないことをお勧めします。 pylab を使用し、その代わりに

import matplotlib
import matplotlib.pyplot as plt

そして、すべての pyplot 関数を plt .

の2番目の返り値を代入していることにも気づきました。 plt.subplots()plt . その変数を次のような名前に変更する必要があります。 fft_plot (高速フーリエ変換の場合) と名前の衝突を避けるために pyplot .

もう一つの質問(「about」)についてですが fig, save fig() を削除する必要があります。 fig を呼び出すことになります。 savefig()plt.savefig() の関数であるからです。 pyplot モジュールです。ですから、その行は次のようになります。

plt.savefig(Output_Location)

こんな感じで試してみてください。

def Time_Domain_Plot(Directory,Title,X_Label,Y_Label,X_Data,Y_Data):
    # Directory: The path length to the directory where the output file is 
    #            to be stored
    # Title:     The name of the output plot, which should end with .eps or .png
    # X_Label:   The X axis label
    # Y_Label:   The Y axis label
    # X_Data:    X axis data points (usually time at which Yaxis data was acquired
    # Y_Data:    Y axis data points, usually amplitude

    import matplotlib
    from matplotlib import rcParams, pyplot as plt

    rcParams.update({'figure.autolayout': True})
    Output_Location = Directory.rstrip() + Title.rstrip()
    fig,fft_plot = plt.subplots()
    matplotlib.rc('xtick',labelsize=18)
    matplotlib.rc('ytick',labelsize=18)
    fft_plot.set_xlabel(X_Label,fontsize=18)
    fft_plot.set_ylabel(Y_Label,fontsize=18)
    plt.plot(X_Data,Y_Data,color='red')
    plt.savefig(Output_Location)
    plt.close()