-1

假设我有一些函数,在这种情况下,下面是一个计算模式的函数和另一个计算数字列表平均值的函数,然后打印一条语句“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)

如何将上面的所有输出,在这种情况下,将上面代码的输出(即模式、意思、“Hello World!”和箱线图)全部转换为单个 pdf 文件?

我在 Stackoverflow 周围搜索和搜索,但只能看到有人建议使用 pyPDF、reportlab 等,但没有示例代码如何做到这一点。如果有人可以提供如何将上述代码输出转换为 pdf 文件的示例,那就太好了。

提前谢谢了。

4

1 回答 1

1

首先你需要得到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/

于 2020-04-05T02:29:00.797 回答