我在公司的一个项目中工作,在这个项目中,我进行常规实验,作为生产和质量控制(QC)的一部分。我们使用定制的仪器从给定的实验中获取数据,并将数据存储在公司服务器上的数据库中。我们目前分析这些数据的界面是运行Jupyter Notebook,它主要基于Python代码,它使用matplotlib根据给定实验的数据生成各种表格和曲线图。我们目前严重依赖于手动创建这些数据的报告,例如将Jupyter Notebook中的一些结果导出为CSV,然后将其导入Excel等。每个实验结束时的最终目标是生成包含所有基本信息和结果的格式良好的多页PDF。
我们真的需要一种更好、更自动化的方法来直接从Jupyter Notebook生成PDF格式的报告,这样我们就可以轻松地将报告附加到其他PDF文件中,例如批量/生产记录。
我需要以清晰简洁的方式报告我在实验中使用的所有设备以及实验数据。我还需要包括每个实验是如何进行实验的摘要。理想情况下,我可以将设备ID#s直接输入Jupyter,使用所有实验数据(图像、数组等)创建数据帧,然后将这些信息导出到PDF模板中。
如想象的那样,PDF将有几个页面/部分,这些页面/部分在连续的实验中基本上保持不变,但将有必须为每个新的数据集和使用的设备更新的部分。我也希望PDF的商业质量,因为它有我的公司的名称和标志,页眉和页脚。
我们已经对PyFPDF进行了一些尝试,但是看起来它对于我们的需求来说可能有点太有限了。我们已经看过一些其他的工具,但有很多选择,而且不清楚什么是最适合我们的目标,以及最容易编码的。有没有人有什么建议可以给我们指明正确的方向?Image of one of the pages from the desired PDF output
发布于 2019-03-12 00:10:04
我也希望
是商业质量,因为它有我的公司的名称和标志,页眉和页脚。
我相信你可以直接使用python库做很多事情,但是如果你真的想要高质量的输出,只需要使用一个合适的工具,比如latex --特别是如果你碰巧已经熟悉它的话。如果不是,学习起来也不难。我有时使用python生成latex输出,然后处理结果。当然,您也可以从python脚本调用pdflatex
。
不过,我建议先为一组数据单独编写latex文档,因为这样更容易进行调整。然后编写一个脚本,为不同的数据集生成和处理该文件。
有关在python中使用latex的更多建议,请参阅https://tex.stackexchange.com/questions/885/how-can-i-use-latex-from-python。
下面是一个生成图形的示例,它是一个latex文件,然后调用pdflatex
对其进行处理。运行此命令,输出将为report.pdf
格式
import numpy as np
import matplotlib.pyplot as plt
import subprocess
# Generate plots
x = np.arange(0,5,.1)
for i in [2,3,4] :
plt.plot(x,x**i)
plt.savefig('Fig{}.png'.format(i))
# Start latex document
f = open('report.tex', 'w')
f.write("""
\\documentclass[]{report}
\\nonstopmode
\\usepackage{lipsum}
\\usepackage{graphicx}
\\begin{document}
\lipsum[1-3]
""")
# Make latex figure
f.write("\\begin{figure}[h]\n")
f.write(" \centering\n")
for i in [2,3,4] :
f.write(" \\includegraphics[width=.3\\textwidth]{{{}}}\n".format('Fig{}.png'.format(i)))
f.write(" \\caption{Polynomials of power 2,3,4}")
f.write("\end{figure}\n")
# End latex document
f.write("\\end{document}\n")
f.close()
# Compile latex document
subprocess.call('ls')
subprocess.call(['pdflatex', 'report.tex'])
https://stackoverflow.com/questions/55111552
复制