ax.imshow()中的图像是颠倒的,但更改origin关键字并不能解决问题

问题描述 投票:0回答:1

matplotlib子图中的图像被反转。将'origin'关键字从'upper'更改为'lower'没有任何区别。当我单独绘制图像时,它绘制得很好。

我试图在matplotlib中显示散点图和轮廓图后面的图像。该可视化是六个不同子图中的一个子图。问题是图像显示为颠倒,我尝试将'origin'关键字从'upper'更改为'lower',但奇怪的是,这与我的情况没有任何区别。任何人都可以告诉我为什么会发生这种情况以及如何解决这个问题?以下是我使用的代码的相关部分。该图像是560 X 550 X 3 numpy阵列。

问题代码

fig, axes = plt.subplots(nrows=3, ncols=2) 

"plot 1"
Dataframe[scorer][bodyparts2plot[0]].plot.scatter('x', 'y', 
               c = '#a98d19', ax=axes[0,0], xlim = (0,560), ylim = (0,550),
               figsize= (20,20), title = bodyparts2plot[3], alpha = 0.1) 
axes[0,0].imshow(image) # plot image
df = Dataframe[scorer][bodyparts2plot[0]][['x','y']]
sns.kdeplot(df,cmap='jet', n_levels=50,ax=axes[0,0]) # plot contour

"plot 2"
Dataframe[scorer][bodyparts2plot[1]].plot.scatter('x', 'y',
                c = '#006666', ax=axes[0,1], xlim = (0,560), ylim = (0,550),
                figsize= (20,20), title = bodyparts2plot[4], alpha = 0.1) 

axes[0,1].imshow(image) # plot image
df = Dataframe[scorer][bodyparts2plot[1]][['x','y']]
sns.kdeplot(df,cmap='jet', n_levels=50, ax=axes[0,1]) # plot contour

将axes.imshow()中的'origin'关键字更改为“upper”或“lower”没有任何区别

这可行,但不是我想要的

当我做

plt.imshow(image)

图像显示正常。

这是目前的情况:image with problem

我想要的是图像是颠倒的。像这样:example但覆盖所有其他东西。

python matplotlib plot imshow
1个回答
0
投票

你的问题是你的初始pandas df.plot.scatter()调用,或者说你在那里指定de ylim=的事实。您强制轴从底部的0开始,而imshow()在图像的顶部绘制0。

改为df.plot.scatter(..., ylim=(550,0), ...)应该解决问题

© www.soinside.com 2019 - 2024. All rights reserved.