Как лучше всего сделать отчет в формате PDF с более чем 100 графиками с помощью Python?

Мне нужен отчет в формате PDF с большим количеством графиков, закодированных в python. Большинство из них будут созданы с помощью matplotlib в цикле, но мне также нужно будет включить графики pandas и кадры данных (все представление) и морские графики. Прямо сейчас я изучил следующие решения:

  • PythonTex. Я уже использовал его для других проектов, но это заняло бы много времени, потому что вам нужно написать \pythontexprint для каждого графика, который вы хотите отобразить.
  • Используйте команду savefig пакета matplotlib в каждой итерации цикла и сохраняйте все графики как изображения для последующей вставки в Latex. Это тоже был бы очень трудоемкий выбор. Другой вариант — с помощью этой команды сохранить графики в формате PDF, а затем объединить все PDF-файлы. Это создало бы уродливый отчет, поскольку графики не поместятся на всю страницу.
  • Используйте RStudio с reticulate для создания отчета Markdown. Проблема здесь в том, что мне нужно будет изучить сетчатую функциональность, таким образом тратя время. Насколько я знаю, PyPDF мне не подходит.
  • Создайте блокнот Jupyter, а затем попробуйте экспортировать его в PDF. В очередной раз не умею пользоваться jupyter Notebook и читал что придется конвертить сначала в html а потом в pdf.
  • Решения отсюда: Создание отчетов с помощью Python: PDF или HTML в PDF Однако вопрос возник три года назад, и в настоящее время он может быть лучше.

Итак, мой вопрос заключается в следующем: есть ли какой-либо простой и быстрый способ получить все эти графики (если это код, который генерирует их еще лучше) в PDF с достойным видом?

ReportLab работает хорошо.

Ответы (1)

Если вы уже знакомы с Python, Pandas и Matplotlib, тогда Jupyter Notebook можно быстро и легко освоить. Вы можете указать Jupyter отображать блокнот в формате pdf без необходимости ручного вмешательства в HTML.

Из вышеизложенного видно, что ряд ваших графиков генерируется из одних и тех же данных и с одним и тем же механизмом, но с разными параметрами, поэтому я бы предложил преобразовать это в параметризованную функцию, которая возвращает график, а затем иметь ячейку, которая вызывает это для каждого требуемого графика. . Вы также можете чередовать ячейки Markdown, чтобы описать методологию и значение следующих графиков.

Вы можете взглянуть на Jupyter Lab для более современного пользовательского интерфейса.

Некоторое дополнительное чтение можно найти по адресу:

и я особенно рекомендую взглянуть на второй из этих двух.