首页 > 解决方案 > 用于 plotly express 热图的自定义悬停模板

问题描述

我正在尝试在 python 中使用包含其他变量的自定义悬停模板从 pandas 数据框plotly.express生成热图。例如:

import pandas as pd
import plotly.express as px

df = pd.DataFrame({'A': [10, 11, 12], 'B': [10, 12, 14], 'C': [12, 14, 16]}, 
       index=['joe', 'tom', 'bob'])

fig = px.imshow(df)
fig.update_layout(xaxis={'title': 'Letters'}, yaxis={'title': 'Nicknames'})
fig.show()

给我这个:

情节热图

我想要的是在悬停信息中添加或替换一个变量,例如,将昵称替换为 Joseph、Thomas 和 Robert。

这必须是可能的,但我无法弄清楚如何使用热图来做到这一点。有没有直接的方法可以做到这一点plotly.express?我应该改用“go”界面(如果是,如何)?

标签: pythonplotly-python

解决方案


我想我找到了答案:

import pandas as pd
import numpy as np
import plotly.express as px

df = pd.DataFrame({'A': [10, 11, 12], 'B': [10, 12, 14], 'C': [12, 14, 16]}, 
       index=['joe', 'tom', 'bob'])

names = ['Joseph', 'Thomas', 'Robert']
fig = px.imshow(df)
fig.update(data=[{'customdata': np.repeat(names, len(df.columns)).reshape(3, 3),
    'hovertemplate': 'Letter: %{x}<br>Nickname: %{y}<br>Fullname: %{customdata}<br>Color: %{z}<extra></extra>'}])
fig.update_layout(xaxis={'title': 'Letters'}, yaxis={'title': 'Nicknames'})
fig.show()

在此处输入图像描述


推荐阅读