如何在imshow(plotly)中更改标题(facet_col)

4
我想使用Plotly的imshow绘制多张图片,并为每张图片添加标题。
我的代码是:
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()

结果看起来像这样

enter image description here

然而,我想用original替换status=0,用clean替换status=1。有没有简单的方法来实现这个结果呢?

感谢任何帮助。

3个回答

4
我通过以下方式解决了我的问题:
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命令,那就太好了。然而,我没有找到任何可能实现这一点的方法。


我知道这个问题已经得到解决,但我想建议另一种更简单的解决方法:fig.for_each_annotation(lambda a: a.update(text=a.text.split("=")[-1])) 来源 - Sergi Ballestar

2
我很感激@DerJFK的回答,但是它不支持多行。
这个技巧可以解决问题:
item_map={f'{i}':key for i, key in enumerate(['orignal', 'clean'])}
fig.for_each_annotation(lambda a: a.update(text=item_map[a.text.split("=")[1]])) 

-1
根据文档,添加一个名字列表的参数'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中的标签似乎想要标记沿第二维的每个像素。这不是标题。但还是谢谢。 - DerJFK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接