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

如何输出与绘图坐标系坐标点一一对应的指定尺寸图像?

解决Matplotlib图像坐标系与输出像素的一一映射问题

要实现坐标系x=[0,640]、y=[0,480]与680×400像素输出图像的一一映射,核心是让绘图区域(axes)完全填充目标尺寸的画布,同时匹配坐标系范围和图像像素的对应关系,具体代码和说明如下:

关键逻辑说明

  1. 匹配画布与目标像素:Matplotlib的figsize是英寸单位,图像像素尺寸 = figsize × dpi。我们直接根据目标像素计算figsize,并固定dpi保证输出尺寸准确。
  2. 消除边距填充画布:手动创建axes并设置其位置为[0,0,1,1],让绘图区域完全占满画布,避免默认边距导致的偏移。
  3. 绑定坐标系范围:设置axes的x、y轴范围为需求的[0,640]和[0,480],确保绘图坐标与图像像素的对应关系。

完整代码

import matplotlib.pyplot as plt

# 目标输出图像的像素尺寸
target_width = 680
target_height = 400

# 设定dpi(可根据需求调整,这里选100方便计算)
dpi = 100

# 根据像素尺寸计算画布的英寸尺寸
figsize = (target_width / dpi, target_height / dpi)

# 创建画布,关闭边框
fig = plt.figure(figsize=figsize, dpi=dpi, frameon=False)

# 创建完全填充画布的绘图区域
ax = fig.add_axes([0, 0, 1, 1])

# 关闭坐标轴显示
ax.axis('off')

# 设置绘图坐标系范围
ax.set_xlim(0, 640)
ax.set_ylim(0, 480)

# --------------------------
# 这里添加你的绘图代码,例如:
# ax.plot([0, 640], [0, 480], color='red')
# --------------------------

# 保存图像,确保dpi一致且无边距
plt.savefig("./output.png", dpi=dpi, pad_inches=0, bbox_inches='tight')
plt.close()

原代码无效原因

你之前的代码使用figsize=(6.4,4.8),默认dpi=100时输出的是640×480像素的图像,和需求的680×400不匹配;同时没有手动控制axes的位置,默认的axes会留有边距,导致绘图内容偏移。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:40:25