给定一个500x500像素的图像,我想在屏幕上显示1:1的图像。另外,我想要一个x轴和y轴。在
plt.imshow()
自动向我的图像添加轴并使图像在窗口中居中,但图像是缩放的,在我的屏幕上不会显示为500x500像素。在fig.figimage()
在我的屏幕上显示图像1:1,但没有添加轴,并在窗口的左下角显示图像。尤其是最大化窗口/调整窗口大小不会改变图像的大小。在现在我需要的是这两者的结合——像fig.figshow
那样显示图像1:1,添加plt.imshow()
添加的轴,并像plt.imshow()
那样显示居中的图像。在
我怎么能做到呢?
或者换句话说:如何告诉plt.imshow()
像fig.figimage()
那样显示im图像?在
演示问题的示例代码:
import matplotlib.pyplot as plt
import numpy as np
width=500;
height=500;
# using plt.imshow()
dummyImage = np.zeros((width, height))
plt.imshow(dummyImage)
plt.show()
# using fig.figimage()
fig = plt.figure(figsize=(width, height))
fig.figimage(dummyImage)
plt.show()
结果:
使用plt.imshow()
:不完全是500x500像素,实际大小取决于窗口的大小。
使用fig.figimage()
:正好500x500像素,与窗口大小无关
你需要自己做一点计算。 比方说,您希望所有边都有50像素的边距,dpi为100,然后可以计算图形大小为
figsize=((width+2*margin)/dpi, (height+2*margin)/dpi)
英寸。然后您需要计算边框,例如,左边框将被边距除以dpi除以图形宽度。您可以将计算的图形大小(figsize
参数的plt.figure()
)和边框(使用subplots_adjust
)设置到图形中。在请注意,要获得一个维度为
width
和高度为height
的图像,您需要一个数组np.zeros((height, width))
,而不是相反的数组。在为了确保图形保持其原始大小,可以添加以下代码,在每次尝试更改图形大小时,将图形大小调整回原始大小:
^{pr2}$相关问题 更多 >
编程相关推荐