我有使用 matplotlib.pyplot 在图像上绘制点的问题。
我们知道,imshow 的约定是原点位于左上角,x 轴向下,y 轴向右。
但是当我使用 plt.plot() 绘制一些点时,轴似乎变成了向右指向的 x 轴和向下指向的 y 轴。
这是一个例子。窗口中显示的光标位置为 x=434 和 y=162。但是,从imshow的约定来看,应该是x=162,y=434。
有没有办法让 plot 函数遵守 imshow 的约定,或者让 imshow 将原点放在左下角以遵循 plot 的约定。非常感谢!

plt.imshow有一个名为 的选项origin,它会改变原点的放置位置。从文档:
原点:['上'| 'lower'],可选,默认值:无
将数组的 [0,0] 索引放在坐标区的左上角或左下角。如果没有,默认为 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()
Run Code Online (Sandbox Code Playgroud)
我认为你想要右下轴,所以ax4.imshow(img.transpose(1,0,2), origin='lower'). 请注意,要转置图像数组,我们必须将 RGBA 通道保留为最后一个轴,因此(1,0,2), 仅转置第一个和第二个轴。
| 归档时间: |
|
| 查看次数: |
8676 次 |
| 最近记录: |