matplotlib中MATLAB的truesize()等效函数是什么?
我刚接触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呢?这样你就不需要通过减去边距、标签和坐标轴的宽度来计算你的实际绘图区域了。