Рубрики
Без рубрики

ReportLab: добавление диаграммы в PDF с Python

Получите практические, реальные навыки Python на наших ресурсах и пути

Автор оригинала: 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 Документация или увидеть один из статей ниже.

Связанное чтение ReportLab – Как добавить графики/графики простой пошаговой учебник ReportLab