python - 图片在 ax.imshow() 中颠倒,但更改 origin 关键字并不能解决问题
问题描述
matplotlib 子图中的图像是倒置的。将“origin”关键字从“upper”更改为“lower”没有任何区别。当我单独绘制图像时,它绘制得很好。
我正在尝试在 matplotlib 中可视化散点图和等高线图后面的图像。该可视化是六个不同子图中的一个子图。问题是图像出现倒置,我尝试将“原点”关键字从“上”更改为“下”,但奇怪的是,这对我的情况没有任何影响。谁能给我一个线索,说明为什么会发生这种情况以及如何解决这个问题?以下是我使用的代码的相关部分。该图像是一个 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)
图像显示正常。
这是目前的情况: 图像有问题
我想要的是颠倒的图像。像这样: 示例 ,但所有其他内容都覆盖了。
解决方案
您的问题在于您最初的 pandasdf.plot.scatter()
调用,或者更确切地说是您在其中指定 de 的事实ylim=
。您正在强制轴从底部的 0 开始,而imshow()
在图像顶部以 0 进行绘图。
更改为df.plot.scatter(..., ylim=(550,0), ...)
应该可以解决问题