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

如何按厘米比例尺打印Matplotlib绘制的图形?

实现Matplotlib图形按精确比例尺打印的方法

要让Matplotlib绘制的图形按指定比例尺(比如纸上1单位对应1厘米)打印,核心是精确控制绘图区域的物理尺寸,并确保保存/打印时不缩放。以下是具体步骤:

1. 明确数据范围与目标比例尺

先确定图形坐标轴的实际数据范围:

  • 假设x轴范围是 x_min 到 x_max,总长度为 x_len = x_max - x_min(单位),对应纸上 x_len 厘米
  • y轴同理,长度 y_len = y_max - y_min,对应纸上 y_len 厘米

2. 单位转换与参数计算

Matplotlib使用英寸作为图形尺寸单位,先把厘米转成英寸:

cm_to_inch = 1 / 2.54  # 1厘米≈0.3937英寸

然后计算**绘图区域(axes)**的英寸尺寸:

axes_width = x_len * cm_to_inch
axes_height = y_len * cm_to_inch

同时预留打印需要的边距(比如各边留1厘米),计算整个图形的总尺寸:

margin_cm = 1  # 四边各留1cm边距
margin_inch = margin_cm * cm_to_inch

fig_width = axes_width + 2 * margin_inch
fig_height = axes_height + 2 * margin_inch

3. 配置图形与绘图区域

设置打印用的DPI(通常300DPI足够清晰),然后创建图形并调整绘图区域的位置:

import matplotlib.pyplot as plt

dpi = 300
fig = plt.figure(dpi=dpi, figsize=(fig_width, fig_height))
ax = fig.add_subplot(111)

# 调整绘图区域位置,[left, bottom, width, height] 为图形尺寸的比例
ax.set_position([
    margin_inch / fig_width,    # 左边距比例
    margin_inch / fig_height,   # 下边距比例
    axes_width / fig_width,     # 绘图区域宽度比例
    axes_height / fig_height    # 绘图区域高度比例
])

4. 绘制图形并固定坐标轴范围

绘制数据后,强制坐标轴范围与之前定义的一致,避免自动缩放:

# 示例:绘制一条直线
ax.plot([x_min, x_max], [y_min, y_max])

# 固定坐标轴范围
ax.set_xlim(x_min, x_max)
ax.set_ylim(y_min, y_max)

5. 保存与打印

保存图片时必须指定相同的DPI,确保物理尺寸准确:

plt.savefig('scaled_plot.png', dpi=dpi, bbox_inches='tight')

打印时注意:

  • 选择**“实际尺寸”或“100%缩放”**选项,不要选“适应页面”或“缩放至合适大小”
  • 部分打印机可能有微小误差,可通过打印测试页微调边距参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 08:35:10