python生成pdf带标题、副标题、折线图,柱状图、饼图
时间: 2023-10-20 13:07:25 浏览: 196
python绘图模板:折线图、柱状图、饼状图等源代码
要生成带标题、副标题、折线图、柱状图、饼图的PDF文件,你可以使用Python中的reportlab库和matplotlib库。
首先,你需要安装reportlab库和matplotlib库。可以使用以下命令来安装:
```
pip install reportlab
pip install matplotlib
```
然后,你可以使用reportlab库来创建PDF文档,并使用matplotlib库来生成图表。下面是一个简单的示例代码,它生成一个带有标题、副标题、折线图、柱状图和饼图的PDF文件。
```python
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
from reportlab.lib import colors
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.graphics.shapes import Drawing
from reportlab.graphics.charts.linecharts import HorizontalLineChart
from reportlab.graphics.charts.barcharts import VerticalBarChart
from reportlab.graphics.charts.piecharts import Pie
import matplotlib.pyplot as plt
import numpy as np
# 创建PDF文档
doc = SimpleDocTemplate("example.pdf", pagesize=letter)
elements = []
# 添加标题和副标题
styles = getSampleStyleSheet()
elements.append(Paragraph("Example Report", styles["h1"]))
elements.append(Spacer(1, 12))
elements.append(Paragraph("This is an example report.", styles["h2"]))
elements.append(Spacer(1, 12))
# 添加折线图
data = np.random.randint(10, 50, size=5)
chart = HorizontalLineChart()
chart.width = 400
chart.height = 200
chart.data = [data]
chart.x = 50
chart.y = 50
chart.categoryAxis.categoryNames = ['A', 'B', 'C', 'D', 'E']
chart.lines[0].strokeColor = colors.blue
chart.lines[0].strokeWidth = 2
d = Drawing(400, 200)
d.add(chart)
elements.append(d)
elements.append(Spacer(1, 12))
# 添加柱状图
data = np.random.randint(10, 50, size=5)
chart = VerticalBarChart()
chart.width = 400
chart.height = 200
chart.data = [data]
chart.x = 50
chart.y = 50
chart.categoryAxis.categoryNames = ['A', 'B', 'C', 'D', 'E']
chart.bars[0].fillColor = colors.blue
chart.bars[0].strokeColor = colors.black
chart.bars[0].strokeWidth = 1
d = Drawing(400, 200)
d.add(chart)
elements.append(d)
elements.append(Spacer(1, 12))
# 添加饼图
data = np.random.randint(10, 50, size=5)
chart = Pie()
chart.width = 400
chart.height = 200
chart.data = data.tolist()
chart.x = 100
chart.y = 100
chart.slices.strokeWidth = 0.5
chart.slices[0].popout = 10
chart.slices[0].strokeWidth = 2
chart.slices[0].strokeDashArray = [2, 2]
d = Drawing(400, 200)
d.add(chart)
elements.append(d)
# 生成PDF文件
doc.build(elements)
```
运行完这个代码后,会生成一个名为“example.pdf”的PDF文件,里面包含了一个标题、副标题、折线图、柱状图和饼图。你可以根据需要修改代码中的数据和图表类型来生成不同的PDF文件。
阅读全文