Как пометить галочки по умолчанию в Plotly?Python

Программы на Python
Ответить
Anonymous
 Как пометить галочки по умолчанию в Plotly?

Сообщение Anonymous »

Я хочу отображать значения оси X на моей экспресс-диаграмме в стандартном формате, а не использовать необработанные метки; сохраняя при этом макеты галочек.

По сути, мне нравится тот факт, что есть только несколько «основных» галочек, а не галочка для каждого значения, но мне нужно чтобы изменить текст меток.
В настоящее время метки представляют собой целочисленные значения, представляющие миллисекунды. Я хотел бы изменить их на мин:сек:мс, как показано на рисунке ниже. Обратите внимание, что столбец «Время» в «df» представляет миллисекунды в правильном формате.
Я пытался выяснить это, используя «Array» ' и сортировку, но это либо сортирует диаграмму (что мне не нужно), либо созданные метки расположены неравномерно и не округляются до ближайшей секунды.
Текущий прогресс и пример кода
Вот мой исходный код до того, как я его испортил!

Код: Выделить всё

import pandas as pd
import numpy as np
import plotly.express as px
from _plotly_utils.colors import n_colors
from scipy import stats
import streamlit as st

def lap_times_graph(year, d_ids, laps_df, races_df, col=st):
for d_id in d_ids:
times = {"x": [], "y": [], "Name": [], "Lap": [], "Time": []}

# Obtains each race the selected driver was in for the selected year
# races_df = races_df.loc[races_df["year"] == year, ["race_id", "name"]]
races_df = races_df[races_df["year"] == year]
for index, r in races_df.iterrows():
df_laps = laps_df.loc[
(laps_df["race_id"] == r["race_id"]) &
(laps_df["driver_id"] == d_id),
["lap", "time", "milliseconds"]
]
df_laps2 = df_laps.sort_values(by="milliseconds")

for ndx, r1 in df_laps.iterrows():
times["x"].append(r1["milliseconds"])
times["y"].append(r["race_id"])
times["Name"].append(r["name"])
times["Lap"].append(r1["lap"])
times["Time"].append(r1["time"])

df = pd.DataFrame(data=times)

# Remove outliers
z = np.abs(stats.zscore(df['x']))
threshold = 3
outliers = df[z >  threshold]
df = df.drop(outliers.index)

fig = px.strip(df, x="x", y="y",
title="""Lap Times
"""
"""Hover over points for more details""",
labels={"x": "Lap time", "y": "Race"},
color_discrete_sequence=n_colors(
"rgb(255, 75, 75)",
"rgb(255,255,255)",
3,
colortype="rgb"
),
color="y",
hover_name="Name", hover_data={
"x": False,
"y": False,
"Lap": True,
"Time": True
})

fig.update_layout(
showlegend=False,
yaxis=dict(
side="right",
showticklabels=False),
xaxis=dict(
tickangle=-45)
)

col.plotly_chart(fig, use_container_width=False)
Пример кода тестового запуска

Код: Выделить всё

def run():
laps_data = {
"race_id": [1, 1, 1, 1, 1, 2, 2, 2, 2, 2],
"driver_id": [101, 101, 101, 101, 101, 102, 102, 102, 102, 102],
"lap": [1, 2, 3, 4, 5, 1, 2, 3, 4, 5],
"time": ['1:40.123', '1:38.456',
'1:37.789', '1:36.123',
'1:35.456', '1:41.789',
'1:40.456', '1:39.789',
'1:38.123', '1:37.456'],
"milliseconds": [100123, 98456, 97789, 96123, 95456,
101789, 100456, 99789, 98123, 97456]
}
races_data = {
"race_id": [1, 2],
"name": ['Australian Grand Prix', 'Monaco Grand Prix'],
"year": [2023, 2023]
}
laps_df = pd.DataFrame(laps_data)
races_df = pd.DataFrame(races_data)
year = 2023
driver_ids = [101, 102]

lap_times_graph(year, driver_ids, laps_df, races_df)
Можно ли как-нибудь изменить метки на галочках по умолчанию, чтобы мне не приходилось искать способ их переделать? df["Time"] Содержит значения в правильном формате, который мне нужен.
Ожидаемый результат
Пример ( метки по оси X) того, чего я хочу достичь (изменения желтого цвета заменят уже имеющиеся галочки):
Изображение

Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/785 ... -in-plotly
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»