Изображение перевернуто в ax.imshow(), но изменение ключевого слова origin не устраняет проблему

#python #matplotlib #plot #imshow

#python #matplotlib #график #imshow

Вопрос:

Изображение внутри подзаголовка matplotlib перевернуто. Изменение ключевого слова ‘origin’ с ‘upper’ на ‘lower’ не имеет никакого значения. Когда я рисую изображение отдельно, оно отображается нормально.

Я пытаюсь визуализировать изображение за точечным и контурным графиком в matplotlib. Эта визуализация является одним из шести различных подзаголовков. Проблема в том, что изображение отображается вверх ногами, и я попытался изменить ключевое слово ‘origin’ с ‘upper’ на ‘lower’, но, как ни странно, в моем случае это не имеет никакого значения. Может ли кто-нибудь дать мне ключ к пониманию того, почему это происходит и как это можно исправить? Ниже приведена соответствующая часть кода, который я использую. Изображение представляет собой числовой массив размером 560 X 550 X 3.

Проблемный код

 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
  

Изменение ключевого слова ‘origin’ в axes.imshow () на «upper» или «lower» не имеет значения

Это работает, но не то, что я хочу

когда я делаю

 plt.imshow(image)
  

изображение отображается нормально.

Это текущая ситуация: изображение с проблемой

Я хочу, чтобы изображение было перевернуто. Вот так: пример, но со всеми другими наложенными элементами.

Ответ №1:

Ваша проблема связана с вашим первоначальным df.plot.scatter() вызовом pandas, или, скорее, с тем фактом, что вы указываете ylim= там de . Вы заставляете ось начинаться с 0 внизу, тогда imshow() как графики с 0 вверху изображения.

Изменение на df.plot.scatter(..., ylim=(550,0), ...) должно устранить проблему

Комментарии:

1. Спасибо. Это исправило! Я бы проголосовал за это, но у меня недостаточно репутации для этого.

2. Если ваша проблема решена, подумайте о принятии ответа, нажав на флажок слева, чтобы указать, что проблема закрыта