Открыть URL при нажатии на точки данных в точечных диаграммах Plotly [Python] - PullRequest
1 голос
/ 25 апреля 2020

Я визуализирую сокращение UMAP 2D векторного пространства Doc2Ve c в виде интерактивного графика рассеяния с помощью Plotly.

Каждая точка соответствует вектору документа. Помимо поведения при наведении (которое отображает некоторую информацию о документе), я хочу иметь возможность нажимать на точки, чтобы URL документа открывался в новом окне.

Вот мой текущий код для рисунок:

fig = go.Figure()

for cat in data.Categories.unique():
  if cat != 'OTHER':
    cat_data = data[data['Categories'] == cat]
    fig.add_trace(go.Scattergl(
        x=cat_data["Component 1"],
        y=cat_data["Component 2"],
        name=cat,
        mode="markers",
        opacity=0.8,
        marker=dict(size=5),
        text=['Label: %s<br>Title: %s'%(d,t) for d,t in cat_data.loc[:,['Labels', 'Document Titles']].values],
        hoverinfo="text"
        ))

fig.update_layout(
    title=title,
    font=dict(
        family="Lato",
        size=16,
        color="#000000"),
    hovermode='closest'
    )

fig.write_html("Plotly/2D_[NN-%s]_[MD-%s].html"%(n_neighbors, min_dist))

Понятия не имею, с чего начать, чтение документации Plotly, похоже, не помогло.

Заранее большое спасибо!

1 Ответ

0 голосов
/ 26 апреля 2020

Вы проверили этот ответ или этот форум сообщение . В конце концов, вы можете поиграть с click-events

В любом случае, если вы ищете быстрое решение, вы можете добавить ссылку в виде аннотации или ховертекста, так как вы можете использовать отформатированный код html в виде текста. , Я предпочитаю аннотацию / разброс текста над ховертекстом, так как в последнем случае правильно щелкнуть мышью.

import pandas as pd
import plotly.graph_objs as go

df = pd.DataFrame({"x":[0,1],
                  "y":[0,1],
                   "text":["<a href=\"https://plot.ly/\">name1</a>",
                           "<a href=\"https://google.com\">name2</a>"]})

fig =  go.Figure()
fig.add_trace(
    go.Scatter(x=df["x"],
               y=df["y"],
               mode="markers+text",
               # Just pick one of the two
               hovertext=df["text"],
               text=df["text"],
               textposition="top center",
               textfont_size=8))

fig.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...