Графические объекты Plotly: информация о наведении курсора не работает

#python #hover #plotly #plotly-dash

#python #наведите #графические объекты plotly #графические объекты plotly-dash

Вопрос:

Как я могу добавить информацию о наведении из столбца «значение» к этому рисунку?

 import plotly-graph_objects as go

fig = go.Figure()

fig.add_trace(go.Scatter(x = df.category,
                         y = df.type,
                         mode='markers',
                         marker={"color": df.value,
                                 "colorscale": 'Sunsetdark',
                                 "size": df["size"],
                                 "showscale": True}
                        ),
              )
  

Мой фрейм данных выглядит следующим образом:

   category          value       type          size
8        B        95890.0          A     19.171122
35       G        95890.0          B     22.312869
67       V        4113.75          C     20.188301
          .
          .
          .
  

Я попытался передать аргумент hoverinfo = df.value в go.Scatter() , но это не сработало. Это работало бы с plotly express, но я хочу использовать объект plotly graph. Ошибка гласит (недопустимые элементы — это первые 10 из моего df):

 ValueError: 
    Invalid element(s) received for the 'hoverinfo' property of scatter
        Invalid elements include: [95890.0, 69910.0, 4113.75, 40450.0, 77530.0, 67470.0, 97660.03, 644340.03, 79488.89, 45591.7399999998]

    The 'hoverinfo' property is a flaglist and may be specified
    as a string containing:
      - Any combination of ['x', 'y', 'z', 'text', 'name'] joined with ' ' characters
        (e.g. 'x y')
        OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip')
      - A list or array of the above
  

Ответ №1:

Вы могли бы передать df.value как text , а затем установить hoverinfo='text' . Обратите внимание, что, поскольку вы установили mode='markers' , текст не будет отображаться на самом графике.

 import plotly.graph_objects as go
import pandas as pd

df = pd.DataFrame({'category': ['B', 'G', 'V'],
                   'value': [95890.0, 95890.0 , 4113.75],
                   'type': ['A', 'B', 'C'],
                   'size': [19.171122, 22.312869, 20.188301]})

fig = go.Figure()

fig.add_trace(go.Scatter(x=df.category,
                         y=df.type,
                         text=df.value,
                         hoverinfo='text',
                         mode='markers',
                         marker={'color': df.value,
                                 'colorscale': 'Sunsetdark',
                                 'size': df.size,
                                 'showscale': True}))

fig.show()