Python- Reportlabs: ¿guardar 2 gráficos diferentes en 2 páginas diferentes?

Tengo el siguiente código donde estoy dibujando un gráfico de barras verticales y un gráfico de líneas también dentro de un PDF.

¿Cómo guardo estos 2 gráficos en 2 páginas diferentes del PDF? Vi que se puede hacer usando –

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

Pero, en lugar de usar Canvas, estoy usando el objeto Drawing en el que no existe el método showPage() .

¿Cómo guardo los 2 gráficos en 2 páginas diferentes del PDF? A la derecha, el segundo gráfico (gráfico de líneas) se superpone al primer gráfico (gráfico de barras vertical), lo que dificulta el gráfico de barras.

Aquí está mi código.

 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) 

Related of "Python- Reportlabs: ¿guardar 2 gráficos diferentes en 2 páginas diferentes?"

Haz un canvas y renderiza tus dibujos en él:

 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 

Espero eso ayude 🙂