Как изменить заголовки (facet_col) в imshow (plotly)

#python #plotly #plotly-python

#python #plotly #plotly-python

Вопрос:

Я хочу построить несколько изображений с imshow помощью from plotly и присвоить каждому изображению заголовок.

Мой код

 fig = px.imshow(numpy.array(img1,img2), color_continuous_scale='gray', facet_col=0, labels={'facet_col' : 'status'})
fig.update_xaxes(showticklabels=False).update_yaxes(showticklabels=False)
fig.show()
 

и результат выглядит так

введите описание изображения здесь

Тем не менее, я хотел бы заменить status=0 на original и status=1 на clean . Есть ли простой способ добиться этого результата?

Спасибо за любую помощь.

Ответ №1:

Я решил свою проблему с помощью

 fig = px.imshow(
  numpy.array(img1,img2), 
  color_continuous_scale='gray', 
  facet_col=0
)

fig.update_xaxes(showticklabels=False).update_yaxes(showticklabels=False)

for i, label in enumerate(['orignal', 'clean']):
    fig.layout.annotations[i]['text'] = label

fig.show()
 

Было бы неплохо, если бы был более короткий путь, например, передача списка меток непосредственно в imshow команду. Однако я не нашел никакой возможности сделать это.

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

1.Я знаю, что этот вопрос уже решен, но я хотел предложить другой способ решения этой проблемы, который может быть более простым: fig.for_each_annotation(lambda a: a.update(text=a.text.split("=")[-1])) источник

Ответ №2:

Согласно документам, добавление параметра ‘x’ со списком имен должно решить эту проблему.

 fig = px.imshow(numpy.array(img1,img2), 
    color_continuous_scale='gray', 
    facet_col=0, 
    labels={'facet_col' : 'status'}, 
    x=['Orginal', 'Clean'])
fig.update_xaxes(showticklabels=False).update_yaxes(showticklabels=False)
fig.show()
 

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

1. Параметры x выдают ошибку ValueError: длина вектора x должна соответствовать длине второго измерения матрицы img. Метки в x, похоже, хотят пометить каждый пиксель вдоль второго измерения. Это не заголовок. Но спасибо