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 

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

Interesting Posts

Force NumPy ndarray возьмет на себя ответственность за свою память в Cython

Как я могу форматировать стеки стека исключения в протоколе Python?

Python объединяет файлы doc в 1 файл документа

Нужен быстрый способ подсчета и суммирования итерации за один проход

Файл сжатия с сохраненной измененной меткой времени

Как преобразовать строку, представляющую двоичную дробь, в число в Python

Доступ к элементам в тени DOM

фильтр django по дате времени в диапазоне дат

Замена нескольких элементов регулярным выражением в Python

почему numpy narray читает из файла, потребляет столько памяти?

Python, должен ли я реализовать __ne __ () оператор на основе __eq__?

pandas: Когда содержимое ячейки является списком, создайте строку для каждого элемента в списке

Сумма подмножества Python

Есть ли способ запустить cpython на неустойчивой нити, не рискуя столкнуться?

Наследование класса Python AttributeError – почему? как исправить?

Python - лучший язык программирования в мире.