You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PdfPages-matplotlib添加页面文本及创建纯文本首页的疑问

问题解答

一、让页面文本正常显示

你当前使用的plt.text()是基于图表坐标轴的坐标系统,如果设置的坐标(1,1)不在你的图表可视范围内,文本就会被隐藏。要在页面任意位置添加脱离图表坐标轴的文本,应该用fig.text()——它采用归一化页面坐标(左下角为(0,0),右上角为(1,1)),能精准控制文本在页面上的位置。

修改后的代码示例:

with PdfPages('multipage_pdf.pdf') as pdf:
    fig = plt.figure(figsize=(11.69,8.27))
    x = df1.index
    y1 = df1[col1]
    y2 = df1[col2]
    plt.plot(x, y1, label=col1)
    plt.plot(x, y2, label=col2)
    plt.legend(loc='best')
    plt.grid(True)
    plt.title('Title')
    
    # 使用fig.text添加页面级文本,坐标为归一化值
    txt = 'this is an example'
    # 示例:放在页面底部居中位置
    fig.text(0.5, 0.02, txt, ha='center', fontsize=12)
    
    pdf.savefig()
    plt.close()

其中ha='center'用于让文本水平居中,你可以调整x、y坐标参数改变文本位置,比如(0.1, 0.9)对应页面左上角区域。

二、创建仅包含文本的首页

完全可以实现!只需先创建一个空画布,用fig.text()添加所需文本并设置样式,再将这个空画布保存为PDF的第一页,之后再添加图表页面即可。

示例代码:

with PdfPages('multipage_pdf.pdf') as pdf:
    # 第一步:生成纯文本首页
    fig_title = plt.figure(figsize=(11.69,8.27))
    # 添加首页主标题,居中显示并放大字号
    fig_title.text(0.5, 0.5, '报告首页标题', ha='center', va='center', fontsize=20, fontweight='bold')
    # 添加副标题或说明文本
    fig_title.text(0.5, 0.4, '这是仅包含文本的首页示例', ha='center', fontsize=14)
    # 将首页保存到PDF
    pdf.savefig(fig_title)
    plt.close(fig_title)
    
    # 第二步:添加原有图表页面
    fig = plt.figure(figsize=(11.69,8.27))
    x = df1.index
    y1 = df1[col1]
    y2 = df1[col2]
    plt.plot(x, y1, label=col1)
    plt.plot(x, y2, label=col2)
    plt.legend(loc='best')
    plt.grid(True)
    plt.title('Title')
    
    # 添加页面级文本
    txt = 'this is an example'
    fig.text(0.5, 0.02, txt, ha='center', fontsize=12)
    
    pdf.savefig()
    plt.close()

这里的va='center'用于让文本垂直居中,你可以根据需求调整文本的位置、字体大小、粗细等样式。

内容的提问来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:44:27