Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Plotly Surface] Weird behavior of hover text for surfacecolor #4586

Open
surasakcho opened this issue Apr 23, 2024 · 1 comment
Open

[Plotly Surface] Weird behavior of hover text for surfacecolor #4586

surasakcho opened this issue Apr 23, 2024 · 1 comment

Comments

@surasakcho
Copy link

image
From the above image, I use the Mt. Bruno's z_data for both z axis and surfacecolor.
The surface graph is correct, but the hover text of surfacecolor is wrong.
The correct surfacecolor text should be 372.8826 same as z's text.

import numpy as np
import plotly
import plotly.graph_objects as go
import pandas as pd

# Read data from a csv
z_data = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/api_docs/mt_bruno_elevation.csv')

fig = go.Figure(data=[
    go.Surface(
        z=z_data.values, 
        surfacecolor=z_data.values, 
        hovertemplate='x=%{x}, y=%{y}<br>z=%{z}<br>surfacecolor=%{surfacecolor}')])

fig.update_layout(title=f'Mt Bruno Elevation (plotly v.{plotly.__version__})', autosize=False,
                  width=500, height=500,
                  margin=dict(l=65, r=50, b=65, t=90))

fig.show()
@surasakcho
Copy link
Author

After a bit of investigation, I suspect the hovertext array of surfacecolor has been transposed (why?).
So I come up with a work around by adding a dummy customdata which is a transposed version of original surface array.
And then we can just displaying customdata in the hovertext instead.

image
image

import numpy as np
import plotly.graph_objects as go
import pandas as pd

# Read data from a csv
z_data = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/api_docs/mt_bruno_elevation.csv')

fig = go.Figure(data=[
    go.Surface(
        z=z_data.values, 
        surfacecolor=z_data.values, 
        customdata=z_data.values.T,
        hovertemplate='x=%{x}, y=%{y}<br>z=%{z}<br>surfacecolor=%{customdata}')])

fig.update_layout(title='Mt Bruno Elevation', autosize=False,
                  width=500, height=500,
                  margin=dict(l=65, r=50, b=65, t=90))

fig.show()

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants