Python-Reportlabs – сохранить 2 разных графика на двух разных страницах?

У меня есть следующий код, где я рисую вертикальную гистограмму и линейный график, а также внутри PDF.

Как сохранить эти 2 графика на двух разных страницах PDF. Я видел, что это можно сделать, используя –

c = canvas.Canvas("hello.pdf") hello(c) c.showPage() c.save() 

Но вместо использования Canvas я использую объект Drawing, в котором showPage() не существует.

Как сохранить 2 графика на двух разных страницах PDF? Вправо второй график (линейная диаграмма) перекрывает первый график (вертикальная гистограмма), тем самым препятствуя гистограмме.

Вот мой код.

 from reportlab.graphics.shapes import Drawing from reportlab.graphics.charts.barcharts import VerticalBarChart drawing = Drawing(400, 200) data = [ (13, 5, 20, 22, 37, 45, 19, 4), (14, 6, 21, 23, 38, 46, 20, 5) ] bc = VerticalBarChart() bc.x = 50 bc.y = 50 bc.height = 125 bc.width = 300 bc.data = data #bc.strokeColor = colors.black bc.valueAxis.valueMin = 0 bc.valueAxis.valueMax = 50 bc.valueAxis.valueStep = 10 bc.categoryAxis.labels.boxAnchor = 'ne' bc.categoryAxis.labels.dx = 8 bc.categoryAxis.labels.dy = -2 bc.categoryAxis.labels.angle = 30 bc.categoryAxis.categoryNames = ['Jan-99','Feb-99','Mar-99', 'Apr-99','May-99','Jun-99','Jul-99','Aug-99'] drawing.add(bc) drawing.save() from reportlab.graphics.charts.lineplots import LinePlot from reportlab.graphics.widgets.markers import makeMarker drawing = Drawing(400, 200) data = [ ((1,1), (2,2), (2.5,1), (3,3), (4,5)), ((1,2), (2,3), (2.5,2), (3.5,5), (4,6)) ] lp = LinePlot() lp.x = 50 lp.y = 50 lp.height = 125 lp.width = 300 lp.data = data lp.joinedLines = 1 lp.lines[0].symbol = makeMarker('FilledCircle') lp.lines[1].symbol = makeMarker('Circle') lp.lineLabelFormat = '%2.0f' #lp.strokeColor = colors.black lp.xValueAxis.valueMin = 0 lp.xValueAxis.valueMax = 5 lp.xValueAxis.valueSteps = [1, 2, 2.5, 3, 4, 5] lp.xValueAxis.labelTextFormat = '%2.1f' lp.yValueAxis.valueMin = 0 lp.yValueAxis.valueMax = 7 lp.yValueAxis.valueSteps = [1, 2, 3, 5, 6] drawing.add(lp) drawing.save() drawing.save(formats=['pdf'],outDir='.',fnRoot=None) 

One Solution collect form web for “Python-Reportlabs – сохранить 2 разных графика на двух разных страницах?”

Сделайте холст и нарисуйте на нем свои рисунки:

 from reportlab.pdfgen import canvas from reportlab.graphics import renderPDF c = canvas.Canvas('hi.pdf') # your drawing # drawing = Drawing(400, 200) x, y = 0, 0 # coordinates (from left bottom) renderPDF.draw(drawing, c, x, y, showBoundary=False) c.showPage() # to end a page and start a new one # extra pages content c.save() # to save :D the whole document 

Надеюсь, поможет 🙂

  • Использование Python ReportLab для splitfirst / splitlast
  • Проблемы с pyinstaller и reportlab
  • Лаборатория отчетов не может обрабатывать иврит (unicode)
  • Нарисуйте изображения с помощью холста и используйте SimpleDocTemplate
  • ReportLab LayoutError: слишком большой на странице
  • IOError: «декодер zip недоступен» с использованием matplotlib PNG в ReportLab для Linux, работает в Windows
  • Добавление шрифта для использования в ReportLab
  • загрузка объекта matplotlib в reportlab
  • Python - лучший язык программирования в мире.