You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将Matplotlib图形保存为指定页面尺寸且带留白的PDF文件

如何将Matplotlib图形保存为指定页面尺寸且带留白的PDF文件

你说的这个需求太常见啦——就是想让生成的PDF里,图表既乖乖待在标准页面的正中间,周围还能留出舒服的空白,而不是硬生生撑满整个页面对吧?其实调整几个参数就能搞定,我给你两种方法,按需选就行:

方法一:快速添加留白(简单易用)

如果你不需要特别精确地控制页面尺寸和留白大小,直接用savefigpad_inches参数就能快速实现。这个参数专门用来设置图形周围留白的尺寸,配合指定页面大小的话,图形会自动居中:

import matplotlib.pyplot as plt

x = [1, 2, 3, 4]
y = [3, 5, 4, 7]
plt.scatter(x, y)

plt.savefig(
    "example_with_margins.pdf",
    bbox_inches="tight",
    pad_inches=1,  # 这里设置周围留白的大小,单位是英寸,数值越大留白越多
    figsize=(8.27, 11.69)  # 指定A4标准页面尺寸,你也可以换成其他尺寸
)
plt.close()

方法二:精确控制位置和尺寸(适合精细需求)

要是你想精准控制图形在页面上的位置、图形本身的大小,那可以用PdfPages配合调整坐标轴的位置来实现,步骤也很清晰:

import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages

# 先定义标准页面尺寸,这里用A4纸的英寸尺寸
page_width, page_height = 8.27, 11.69
# 再设置你想要的图形本身的大小
fig_width, fig_height = 6, 4

# 创建画布并指定图形初始尺寸
fig, ax = plt.subplots(figsize=(fig_width, fig_height))

# 绘制你的散点图
x = [1, 2, 3, 4]
y = [3, 5, 4, 7]
ax.scatter(x, y)

# 计算让图形居中的边距比例
left_margin_ratio = (page_width - fig_width) / page_width / 2
bottom_margin_ratio = (page_height - fig_height) / page_height / 2

# 用PdfPages来控制PDF页面布局
with PdfPages("example_centered.pdf") as pdf:
    # 把画布尺寸改成标准页面大小
    fig.set_size_inches(page_width, page_height)
    # 调整坐标轴在画布上的位置,实现居中效果
    ax.set_position([left_margin_ratio, bottom_margin_ratio, 
                     fig_width/page_width, fig_height/page_height])
    # 保存图形
    pdf.savefig(fig, bbox_inches="tight")

plt.close()

这个方法里,我们先算出页面和图形的尺寸差,再转换成比例来设置坐标轴位置,这样图形就会正好居中在页面上,留白的大小也完全可控。

备注:内容来源于stack exchange,提问作者Dave

火山引擎 最新活动