plotly Scatter customdata oare only NaN
Я хотел бы отображать дополнительные данные при наведении курсора на кривую, созданную go.Scatter. В приведенном ниже сценарии правильные значения x и y отображаются во всплывающем окне, но x ^ 2 и cos всегда отображаются как NaN. Буду очень признателен за любую помощь.
import dash
import dash_html_components as html
import dash_core_components as dcc
import plotly.graph_objects as go
import numpy as np
x = np.mgrid[0.0:10.0:100j]
y = np.sin(x)
fig = go.Figure()
fig.add_trace(go.Scatter(x = x, y = y, line_width = 4,
customdata = [x**2, np.cos(x)],
hovertemplate = "<br>".join([
"x = %{x:,.1f}",
"y = %{y:,.1f}",
"x^2 = %{customdata[0]:,.1f}",
"cos = %{customdata[1]:,.1f}"
])
))
app = dash.Dash()
app.layout = html.Div([dcc.Graph(figure=fig)])
app.run_server()
2 ответа
import plotly.graph_objects as go
import numpy as np
x = np.mgrid[0.0:10.0:100j]
y = np.sin(x)
custom_data = np.stack((x**2, np.cos(x)), axis=-1)
fig = go.Figure()
fig.add_trace(go.Scatter(x = x, y = y, line_width = 4))
fig.update_traces(customdata=custom_data,
hovertemplate ="x: %{x}<br>"+\
"y: %{y}<br>"+\
"x**2: %{customdata[0]: .1f}<br>"+\
"cos: %{customdata[1]: .1f}")
fig.show()
Для тех, кто борется с этим при использовании статических меток или других точек данных:
Длина массива пользовательских данных должна соответствовать длине входного набора данных.
Например, для переменных wd, dc и кадра данных df:
customdata = np.array([[int(wd),int(dc)] for x in np.arange(len(df))])