matplotlib中MATLAB的truesize()等效函数是什么?

0 投票
2 回答
590 浏览
提问于 2025-04-15 21:38

我刚接触matplotlib和python,想要显示一张图片,让图片中的每一个像素在图中也能对应一个像素。在MATLAB中,可以用命令truesize()来实现这个效果。请问在Python中怎么做呢?

我尝试调整了imshow()的参数,还有set_dpi()set_figwidth()/set_figheight(),但是没有成功。

谢谢。

2 个回答

0

这个小技巧实现了我想要的功能,虽然还不是很完美:

h = mplt.imshow(img, interpolation='nearest')

dpi = h.figure.get_dpi()
h.figure.set_figwidth(img.shape[0] / dpi)
h.figure.set_figheight(img.shape[1] / dpi)
h.figure.canvas.resize(img.shape[1] + 1, img.shape[0] + 1)

h.axes.set_position([0, 0, 1, 1])
h.axes.set_xlim(-1, img.shape[1])
h.axes.set_ylim(img.shape[0], -1)

它可以进一步改进,以考虑到图像周围的边距。

1

如果你想要精确到每个像素地创建图像,为什么不直接使用PIL呢?这样你就不需要通过减去边距、标签和坐标轴的宽度来计算你的实际绘图区域了。

撰写回答