我用python编写了一个相对简单的函数,可以用来绘制一个数据集的时域历史以及一个数据集在快速傅立叶变换后的频域响应。在这个函数中,我使用命令from pylab import *引入所有必要的功能。然而,尽管成功地创建了这个情节,我还是得到了一个警告
只允许在模块级导入*。
因此,如果使用命令from pylab import *不是首选方法,那么如何正确地从pylab加载所有必需的功能。代码附在下面。另外,在函数退出后,是否有一种关闭图形的方法,我曾尝试过子图未被识别?

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 documentation开始:
pylab是一个方便的模块,它在单个名称空间中批量导入matplotlib.pyplot(用于绘图)和numpy(用于数学和处理数组)。尽管许多示例使用pylab,但不再推荐使用它。
我建议完全不要导入pylab,而是尝试使用

import matplotlib
import matplotlib.pyplot as plt

然后用pyplot前缀所有的plt函数。
我还注意到您将第二个返回值从plt.subplots()分配到plt。您应该将该变量重命名为类似于fft_plot(用于快速傅立叶变换)的名称,以避免与pyplot的命名冲突。
关于您的另一个问题(关于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()

关于python - 在python 2.7的功能级别上导入pylab的首选方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35463670/

10-12 17:53