Как остановить создание дополнительной страницы в выводе PDF из функции matplotlib PdfPages - PullRequest
0 голосов
/ 02 марта 2012

Я не могу понять, почему я получаю дополнительную страницу в моем файле PDF. У меня есть только 7 файлов, которые загружаются, но 8 создаются в выходном файле PDF. Ниже приведен код, с которым я работаю. Загружаемые файлы на самом деле являются копиями одного файла, каждый из которых переименовывается в другое имя, чтобы избежать проблем. Я не думаю, что тот факт, что фактическое содержимое одинаково, должно иметь значение, верно?

Редактировать: я смог убедиться, что это последний файл, который загружен и добавлен в файл PDF, который создается дважды, но я до сих пор не понимаю, почему ..

def processFiles():
    ##Set some vars
    global kdeData
    counter = 0
    sColumn = selectCol()
    sSamples = setSamples()
    rfName = raw_input("Name of file to save results to: ")+".pdf"
    createPDF = PdfPages(rfName)

    ##Iterate for each file
    for file in fileList:
        valid = [sColumn]
        matrix = np.loadtxt(file, skiprows=1, usecols=valid)
        colCount = np.loadtxt(file, dtype=object)
        totalCols = colCount.shape[1]

        ldlValid = [i for i in range(totalCols)]
        lDL = np.loadtxt(file, usecols=ldlValid, dtype=object)

        kdeData = np.array(matrix)

        gkde = stats.gaussian_kde(kdeData)
        ind = np.linspace(-int(getRange()), int(getRange()), len(kdeData) * sSamples)
        kdepdf = gkde.evaluate(ind)
        plt.figure()

        ##plot histogram of sample
        plt.hist(kdeData, len(kdeData), normed=1, alpha=0.20)
        ##plot data generating density
        plt.plot(ind, stats.norm.pdf(ind), 'r', linewidth=0.8, label='DGP normal')
        ##plot estimated density
        plt.plot(ind, kdepdf, 'g', linewidth=0.8, label='kde')
        plt.title('KDE for '+str(nameList[counter]))
        plt.legend()
        plt.savefig(createPDF, format='pdf')
        counter += 1

    ##Save PDF and open it
    createPDF.savefig()
    createPDF.close()
    os.startfile(rfName)

1 Ответ

2 голосов
/ 03 марта 2012

Это дополнительные createPDF.savefig() две строки снизу вверх.

...