gpt4 book ai didi

python - matplotlib:图像 imshow 的坐标约定与绘图不兼容

转载 作者:太空宇宙 更新时间:2023-11-04 10:12:01 40 4
gpt4 key购买 nike

我在使用 matplotlib.pyplot 在图像上绘制点时遇到问题。

我们知道,imshow的约定是原点位于左上角,x轴指向下方,y轴指向右侧。

但是当我使用 plt.plot() 绘制一些点时,坐标轴似乎变为 x 轴指向右侧,y 轴指向下方。

这是一个例子。窗口中显示的光标位置是 x=434 和 y=162。但是按照imshow的约定,应该是x=162,y=434。

有没有办法让 plot 函数遵守 imshow 的约定,或者让 imshow 将原点放在左下角以遵循 plot 的约定。非常感谢!

cursor location

最佳答案

plt.imshow有一个名为 origin 的选项,它会更改原点的放置位置。来自文档:

origin : [‘upper’ | ‘lower’], optional, default: None

Place the [0,0] index of the array in the upper left or lower left corner of the axes. If None, default to 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()

enter image description here

我认为您需要右下轴,所以 ax4.imshow(img.transpose(1,0,2), origin='lower')。请注意,要转置图像数组,我们必须将 RGBA channel 保留为最后一个轴,因此 (1,0,2) 仅转置第一个和第二个轴。

关于python - matplotlib:图像 imshow 的坐标约定与绘图不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37706005/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com