Показать фиксированное количество символов в сюжетной легенде, за которым следует многоточие? - PullRequest
0 голосов
/ 04 августа 2020

Я использовал px.line() для создания интерактивных графиков на основе уникального идентификатора, но уникальный идентификатор иногда бывает очень длинным, и легенда берет на себя сюжет.

import pandas as pd
import plotly.express as px

fig = px.line(df_plot, x="x", y="y", color="Unique_ID")
fig.show()

Есть ли способ, которым я может отображать только первые 15 символов, например, за которыми следует многоточие? И если это возможно, могу ли я получить полный уникальный идентификатор, если наведу курсор на элемент легенды?

Спасибо!

1 Ответ

1 голос
/ 04 августа 2020

Вы можете перезаписать каждое имя трассировки с помощью fig.for_each_trace.

Generate Data

import pandas as pd
import numpy as np

df = pd.DataFrame({
     "x":np.arange(10),
     "y":np.random.randn(10)})

out = []
for i in range(3):
    df["Unique_ID"] = f"{i}"+"a"*14+"b"*5
    df["y"] += 1
    out.append(df.copy())
df_plot = pd.concat(out, ignore_index=True)

Basicallu every Unique_ID - это один di git, за которым следуют 14 a и 5 b.

Участок

import plotly.express as px
fig = px.line(df_plot, x="x", y="y", color="Unique_ID")
fig.for_each_trace(
  lambda trace: trace.update(name=trace.name[:15]))
fig.show()

введите описание изображения здесь

...