[英]Display a image with imshow to be behind another plot in matplotlib
[英]matplotlib: coordinates convention of image imshow incompatible with plot
我有一个使用matplotlib.pyplot在图像上绘制点的问题。
众所周知,imshow的惯例是原点位于左上角,x轴指向下方,y轴指向右侧。
但是,当我使用plt.plot()绘制一些点时,这些轴似乎变成x轴指向右侧,y轴指向下方。
这是一个例子。 窗口中显示的光标位置为x = 434和y = 162。 但是,根据imshow的约定,它应该为x = 162和y = 434。
有没有办法让绘图函数遵守imshow的约定,或者只是让imshow将原点放在左下角以遵循绘图的约定。 非常感谢你!
plt.imshow
有一个称为origin
的选项,它将更改原点的放置位置。 从文档:
来源:['upper'| [lower]],可选,默认值:无
将数组的[0,0]索引放置在轴的左上角或左下角。 如果为None,则默认为rc image.origin。
从您的描述看来,您想将origin = 'lower'
要切换x和y轴,还需要转置图像数组。 考虑以下示例:
import matplotlib.pyplot as plt
import matplotlib.cbook as cbook
image_file = cbook.get_sample_data('ada.png')
img = plt.imread(image_file)
fig,((ax1,ax2),(ax3,ax4)) = plt.subplots(2,2)
ax1.imshow(img, origin='upper')
ax2.imshow(img, origin='lower')
ax3.imshow(img.transpose(1,0,2), origin='upper')
ax4.imshow(img.transpose(1,0,2), origin='lower')
ax3.set_xlabel('upper')
ax4.set_xlabel('lower')
ax1.set_ylabel('Not transposed')
ax3.set_ylabel('Transposed')
plt.show()
我认为您需要右下轴,所以ax4.imshow(img.transpose(1,0,2), origin='lower')
。 请注意,要转置图像数组,我们必须将RGBA通道保留为最后一个轴,因此(1,0,2)
只能转置第一个和第二个轴。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.