Em última análise, estou tentando adicionar um px.timeline a uma figura contendo um go.Scatter (semelhante ao que eles estavam fazendo aqui: adicionar um traço do Plotly Express a um graph Objects go.Figure() com vários traços? ).
Ao fazer isso, a linha do tempo não aparece. Reduzi a um problema quando uso a função add_trace (). Minha linha do tempo aparece bem se eu usar px.timeline diretamente ao criar o objeto Figure, mas quando tento adicioná-lo a uma Figure existente, usando Figure.add_trace(), parece fora de controle. O eixo x não está mais mostrando o tempo.
Um trecho de código autônomo que mostra esse comportamento é visto abaixo. Qualquer ajuda é muito apreciada!
import pandas as pd
import plotly.graph_objects as go
import plotly.express as px
mydata_as_json = '{"Start_Time":{"0":"2023-11-01 16:48:24.8","1":"2023-11-01 16:49:47.7","2":"2023-11-01 16:53:23.3","3":"2023-11-01 16:56:08.6","4":"2023-11-01 16:58:37.9","5":"2023-11-01 17:00:10.9"},"End_Time":{"0":"2023-11-01 16:48:37.7","1":"2023-11-01 16:51:44.3","2":"2023-11-01 16:54:00.2","3":"2023-11-01 16:57:23.4","4":"2023-11-01 16:58:56.8","5":"2023-11-01 17:01:59.1"},"Instr":{"0":"MVIC","1":"LEISA","2":"MVIC","3":"LEISA","4":"MVIC","5":"LEISA"}}'
df = pd.DataFrame(eval(mydata_as_json))
# This works
fig_good = px.timeline(
df,
x_start="Start_Time",
x_end="End_Time",
y="Instr",
)
fig_good.show()
# This doesn't work. Why?
fig_bad = go.Figure()
fig_bad = fig_bad.add_trace(
px.timeline(
df,
x_start='Start_Time',
x_end='End_Time',
y='Instr',
).data[0]
)
fig_bad.show()
Você também precisa adicionar o layout do
px.timeline
objeto. Em seguida, deve renderizar conforme o esperado:Apenas para futuros leitores, encontrei outra solução para isso. Apenas adicionar esta única linha antes de .show() também funciona.
fig_bad.update_xaxes(type='date')