我如何使用的信息从第二个df在悬空模板的图表不显示热图?



我有2个dfs;第一个是用来制作热图的值,第二个df是我想在悬停时使用的元数据。

我已经尝试了很多方法,除了有一些我不理解的行为,这几乎是工作的:

import plotly.express as px
import pandas as pd
import difflib
df1 = pd.DataFrame([[22,33],[23,31]], columns=['A','B'])
df2 = pd.DataFrame([['top_left','top_right'],['bottom_left','bottom_right']], columns=['A','B'])
print(df1)
print(df2)
fig = px.imshow(df1, 
color_continuous_scale=px.colors.diverging.RdYlGn, 
title='QC')
def ff(sample, pos, tmp):

d=tmp.to_dict()
s2 = list(d.keys())[0]

print(sample, pos, s2, s2 == sample, s2 == 'A', sample == 'A', type(sample), type(s2), list(difflib.ndiff([sample], [s2])))

return sample, pos #1, tmp.loc[pos, sample]
fig.update_traces(hovertemplate="Sample: %{x} <br> Position: %{y} <br> Score: %{z}" +
f" <br> Depths: {ff('%{x}', '%{y}', df2)}")
fig.show()

A   B
0  22  33
1  23  31
A             B
0     top_left     top_right
1  bottom_left  bottom_right
%{x} %{y} A False True False <class 'str'> <class 'str'> ['- %{x}', '+ A']

所以s2 != sample,因为它仍然是%{x}(不是'A')。这就解释了为什么这个不起作用#1,tmp。loc (pos、样品)。我不知道该怎么解决这个问题。任何帮助,感谢!

只是为了清楚-我想要得到的是'top_left',如果我悬停在左上角(A0)的热图。

感谢Cimbali找到chart-studio:

import plotly.graph_objects as go
import pandas as pd
df1 = pd.DataFrame([[22,33],[23,31]], columns=['A','B'])
df2 = pd.DataFrame([['top_left','top_right'],['bottom_left','bottom_right']], columns=['A','B'])
fig3 = go.Figure(go.Heatmap(z = df1, customdata= df2, hovertemplate= 'z: %{z}<br> %{customdata}'))
fig3.show()

相关内容

  • 没有找到相关文章

最新更新