使用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
相关产品推荐
相关产品推荐

