Автор оригинала: Mike Driscoll.
Инструментарий ReportLab поддерживает добавление многих различных диаграмм и графиков к вашим PDF. На самом деле я охватил некоторые из них в предыдущей статье. Однако большинство примеров, которые я видел, в том числе в своей статье, не показывает, как вставить диаграмму в качестве текучести.
Что означает, что большинство примеров показывают вам, как создать PDF с одной страницей, которая содержит таблицу в нем. Большинство разработчиков хотели бы создать какой-то текст, возможно, стол и вставить диаграмму вместе с этими элементами. У вас также обычно есть дополнительный текст, следующий за графиком.
Для этой статьи вы узнаете, как только это сделать.
Добавление диаграммы
Давайте создадим простую круговую диаграмму и добавьте ее простой PDF. Это PDF, что вы будете создавать, будет предложено до и после графика.
Вот код:
from reportlab.lib.styles import getSampleStyleSheet from reportlab.lib.validators import Auto from reportlab.graphics.charts.legends import Legend from reportlab.graphics.charts.piecharts import Pie from reportlab.graphics.shapes import Drawing, String from reportlab.platypus import SimpleDocTemplate, Paragraph def add_legend(draw_obj, chart, data): legend = Legend() legend.alignment = 'right' legend.x = 10 legend.y = 70 legend.colorNamePairs = Auto(obj=chart) draw_obj.add(legend) def pie_chart_with_legend(): data = list(range(15, 105, 15)) drawing = Drawing(width=400, height=200) my_title = String(170, 40, 'My Pie Chart', fontSize=14) pie = Pie() pie.sideLabels = True pie.x = 150 pie.y = 65 pie.data = data pie.labels = [letter for letter in 'abcdefg'] pie.slices.strokeWidth = 0.5 drawing.add(my_title) drawing.add(pie) add_legend(drawing, pie, data) return drawing def main(): doc = SimpleDocTemplate('flowable_with_chart.pdf') elements = [] styles = getSampleStyleSheet() ptext = Paragraph('Text before the chart', styles["Normal"]) elements.append(ptext) chart = pie_chart_with_legend() elements.append(chart) ptext = Paragraph('Text after the chart', styles["Normal"]) elements.append(ptext) doc.build(elements) if __name__ == '__main__': main()
Есть много импорта, которые требуются. Не стесняйтесь смотреть в документацию ReportLab. Я буду сосредоточиться на функциях здесь вместо этого. Первая функция создаст Легенда для диаграммы. Он устанавливает координаты X/Y для диаграммы и использует объект диаграммы для автоматического определения цветов в легенде.
Вторая функция создаст самой круговой диаграммы. Графики в ReportLab помещают внутри Рисование объекты. Таким образом, вы создаете объект рисунка, затем объект пирога. Далее вы устанавливаете его положение и добавьте некоторые данные в диаграмму. Вы также добавляете этикетки и установите ширину хода для диаграммы, прежде чем добавлять ее на чертеж.
Последняя функция называется Главная () Отказ Здесь вы создадите шаблон документа и добавить строку текста, используя ReportLab Пункт объект. Затем вы называете функцию создания круговой диаграммы, чтобы получить чертеж, который можно добавить в список FlowBable, которые вы звоните Элементы Отказ Наконец, вы добавляете еще один абзац, а затем создаете документ и напишите его на диск.
Это то, что должно выглядеть содержимое PDF:
Обертывание
Это довольно короткая статья, но я надеюсь, что она поможет вам увидеть, как вы можете вставить карты в свои PDF, используя Python и ReportLab. Если вы заинтересованы в добавлении других типов диаграмм, вы должны проверить ReportLab Документация или увидеть один из статей ниже.