matplotlib相当于MATLABs的truesize()

时间:2010-04-15 12:12:45

标签: python matlab matplotlib

我是matplotlib和python的新手,想要显示一个图像,这样图像的1个像素实际上由图中的1个像素表示。在MATLAB中,这是通过命令truesize()实现的。我怎么能用Python做到这一点?

我尝试使用imshow()参数以及set_dpi()set_figwidth()/set_figheight(),但没有运气。

感谢。

2 个答案:

答案 0 :(得分:1)

如果您想要创建图像直到像素级别,为什么不首先use PIL?这样,您就不必通过从图形扩展中减去边距,标签和轴宽来以编程方式计算您的真实绘图区域。

答案 1 :(得分: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)

可以推广它来考虑保持图像的轴周围的边距。