#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. Если ваша проблема решена, подумайте о принятии ответа, нажав на флажок слева, чтобы указать, что проблема закрыта