简体   繁体   中英

plotly express imshow hover text

I'm trying to make plotly express imshow accept two different hover text values that are different to the axis values, using the code below:

matrix = graph_to_matrix(edf, G.nodes)
x_axis = list(G.nodes)
y_axis = x_axis[::-1]

#these are what I want to add :D
custom_data = np.dstack([np.array([genome_protein_data[n]['product'] for n in x_axis]),
                                               np.array([genome_protein_data[n]['product'] for n in y_axis])])
######

figure_test = px.imshow (gmat[::-1], 
                         x =  x_axis, 
                         y = y_axis, 
                         labels=dict(x="Target", 
                                     y="Source", 
                                     color="Number"))
fig.update_layout(coloraxis_colorbar_x=0.8)
#this doesn't work - from https://stackoverflow.com/a/63185950/11357695
fig.update_traces(
    hovertemplate="<br>".join([
                    "X: %{x}",
                    "X product: %{customdata[0].3f}",
                    "Y: %{y}",
                    "Y product: %{customdata[1].3f}",
    ])
)

figure_test.write_html('my_file.html')

I get almost what I want, but my custom data isn't substituting: 在此处输入图像描述

How do I get the proper x/y product values?

Cheers! Tim

Hi I got what I wanted eventually - key seems to be makeing arrays of the same dimension as your data, one array per hover val. Was greatly helped by r-beginners and this and this enter link description here . Here is my code:

matrix = graph_to_matrix(edf, G.nodes)
x_axis = list(G.nodes)
y_axis = x_axis[::-1]

#x axis array - vals in a single col are the same
z1 = np.array([[genome_protein_data[x_axis[i]]['product'] for i in x_axis] for row in range(len(x_axis))])#num rows == num cols

#y axis array - vals in a single row are the same
z2 = np.array([[genome_protein_data[y_axis[i]]['product'] for i in range(len(y_axis))] for i in y_axis])

figure_test = px.imshow (gmat[::-1], 
                        x =  x_axis, 
                        y = y_axis, 
                        labels=dict(x="Target", 
                                    y="Source", 
                                    color="Number of sharedmodules"))
figure_test.update_layout(coloraxis_colorbar_x=0.8)
figure_test.update(data=[{'customdata': np.dstack((z1, z2)),
    'hovertemplate': "(x) %{x} product: %{customdata[0]}<br>(y) %{y} product: %{customdata[1]}<br>%{z}"}])

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM