Как преобразовать вывод в файл PDF - PullRequest
0 голосов
/ 05 апреля 2020

Скажите, если у меня есть некоторые функции, в данном случае ниже функция, которая вычисляет режим, и другая функция, чтобы вычислить среднее значение списка чисел, а затем вывести оператор «Hello World!». и, наконец, следует печать коробочного графика:

import matplotlib.pyplot as plt
import seaborn as sns

def mode(lst):
    most = max(list(map(lst.count, lst)))
    return print(list(set(filter(lambda x: lst.count(x) == most, lst))))

def mean(lst):
    return print(float(sum(lst)) / max(len(lst), 1))

list1 = [1,2,3,4,5]

mode(list1)
mean(list1)
print('Hello World!')

plt.figure(figsize=(10,10))
sns.boxplot(data=list1)

Как преобразовать все выходные данные выше, в этом случае выходные данные из кода выше (ie. mode, означают «Hello World!» и boxplot) все в одном файле PDF?

Я гуглил и искал Stackoverflow, но могу видеть только людей, предлагающих использовать pyPDF, reportlab et c. но нет примера кода, как это можно сделать. Было бы здорово, если бы кто-нибудь смог привести пример того, как вышеприведенный вывод кода можно преобразовать в файл PDF.

Заранее большое спасибо.

1 Ответ

1 голос
/ 05 апреля 2020

Сначала вам нужно получить PyPDF (библиотека для обработки PDF):
pip install fpdf
, затем вы можете записать строки в эту (только строки)

import matplotlib.pyplot as plt
import seaborn as sns
from fpdf import FPDF

def mode(lst):
    most = max(list(map(lst.count, lst)))
    return list(set(filter(lambda x: lst.count(x) == most, lst))) # to write this to pdf you need to return it as a variable and not print it

def mean(lst):
    return float(sum(lst)) / max(len(lst), 1)

list1 = [1,2,3,4,5]

gotmode = mode(list1) #execute functions
gotmean = mean(list1)
helloworld = 'Hello World!'

print(gotmode) #display these variables
print(gotmean)
print(helloworld)


pdf = FPDF() # create pdf
pdf.add_page() #add page!
pdf.set_font("Arial", size=12) # font
pdf.cell(200, 10, txt=str(gotmode), ln=1, align="C") #write to pdf, They need to be strings
pdf.cell(200, 10, txt=str(gotmean), ln=1, align="C")
pdf.cell(200, 10, txt=helloworld, ln=1, align="C")

pdf.output("simple_demo.pdf") # output file

Вот документы к библиотеке fpdf: https://pyfpdf.readthedocs.io/en/latest/

...