【问题标题】:Image is upside down in ax.imshow() but changing the origin keyword doesn't fix the problem图片在 ax.imshow() 中颠倒,但更改 origin 关键字并不能解决问题
【发布时间】:2019-04-11 20:50:17
【问题描述】:

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)

图像显示正常。

这是目前的情况: image with problem

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

【问题讨论】:

    标签: python matplotlib plot imshow


    【解决方案1】:

    您的问题在于您最初的 pandas df.plot.scatter() 调用,或者更确切地说是您在其中指定 de ylim= 的事实。您强制轴从底部的 0 开始,而 imshow() 在图像顶部绘制 0。

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

    【讨论】:

    • 谢谢。那解决了它!我会对此表示赞成,但我没有足够的声誉。
    • 如果您的问题已解决,请考虑通过单击左侧的复选标记来表示该问题已关闭
    猜你喜欢
    • 2020-09-26
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    • 2022-01-02
    • 2022-01-20
    相关资源
    最近更新 更多