¿Cuál es la mejor manera de hacer un informe en PDF con más de 100 gráficos con Python?

Necesito tener un informe en PDF con muchas parcelas codificadas en python. La mayoría de ellos se crearán con matplotlib dentro de un bucle, pero también necesitaría incluir gráficos y marcos de datos de pandas (la vista completa) y gráficos marinos. En este momento he explorado las siguientes soluciones:

  • PythonTex. Ya lo he usado para otros proyectos, pero consumiría mucho tiempo porque tienes que escribir \pythontexprint para cada gráfico que quieras mostrar.
  • Use el comando savefig del paquete matplotlib en cada iteración del bucle y guarde todos los gráficos como imagen para insertarlos todos en Latex más tarde. Esa también sería una elección que consumiría mucho tiempo. Otra opción es con ese comando guardar los gráficos como pdf y luego fusionar todos los pdf. Eso crearía un informe feo ya que las tramas no se ajustarán a toda la página.
  • Utilice RStudio con reticulate para crear un informe Markdown. El problema aquí es que necesitaría aprender la funcionalidad de reticular, por lo que gastaría tiempo. Que yo sepa, PyPDF no se ajusta a mis necesidades.
  • Cree un cuaderno jupyter y luego intente exportarlo a un PDF. Una vez más, no sé usar jupyter notebook y leí que tendría que convertir primero a html y luego a pdf.
  • Soluciones desde aquí: Generación de informes con Python: PDF o HTML a PDF Sin embargo, la pregunta es de hace tres años y podría ser una mejor opción hoy en día.

Entonces mi pregunta es la siguiente: ¿hay alguna forma fácil y rápida de obtener todos esos gráficos (si es a lo largo del código que los genera aún mejor) en un PDF con un aspecto decente?

ReportLab funciona bien.

Respuestas (1)

Si ya conoce Python, Pandas y Matplotlib, los cuadernos de Jupyter son rápidos y fáciles de aprender. Puede decirle a Jupyter que convierta un Notebook en pdf sin necesidad de realizar ninguna intervención manual en HTML.

De lo anterior, varios de sus gráficos se generan a partir de los mismos datos y con el mismo mecanismo pero con diferentes parámetros, por lo que sugeriría convertir eso en una función parametrizada que devuelve un gráfico y luego tener una celda que lo llame para cada gráfico requerido. . También puede intercalar celdas de Markdown para describir la metodología y el significado de las siguientes gráficas.

Es posible que desee echar un vistazo a Jupyter Lab para obtener una interfaz de usuario más moderna.

Algunas lecturas adicionales se pueden encontrar en:

y recomiendo especialmente echar un vistazo al segundo de estos dos.