Gantt chart export with kaleido v1.0.0 shows 1970 epoch

Aberta
#392 3 comentários 5 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
48/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Estagnada
Stack de tecnologia
pandas, python

Direção de pesquisa

Comece executando o exemplo mínimo em Python com pandas 2.3.1, plotly 6.3.0 e kaleido 1.0.0 e, em seguida, compare a imagem exportada com o ambiente mais antigo com kaleido 0.2.1. Rastreie o caminho de exportação estática para os valores de data da linha do tempo; considera-se concluído quando Gantt_Chart.png preserva as datas de agosto e setembro de 2025 no eixo x.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

bug P2

Problem Description

I'm reporting a bug with the new kaleido v1.0.0 engine, when I make a Gantt chart with plotly.express.timeline. The issue is how it handles my datetime objects (and with sting date) when I try to save a static image.

I found the problem in a couple of ways:

  1. When I run fig.show() in my Jupyter Notebook, the chart looks perfect with the right 2025 dates. But when I save that same figure with fig.write_image(), I get a broken image. Its x-axis starts at 1970.
  2. I get the exact same broken image with 1970 dates when I run my code as a normal Python script.

It really makes me think this is a regression bug in the kaleido v1.0.0 renderer.

Minimal Reproducible Example

This script will always create the error. The /// script part is there for anyone using a tool like Astral's uv.

# /// script
# requires-python = "==3.13.1"
# dependencies = [
#     "pandas==2.3.1",
#     "plotly==6.3.0",
#     "kaleido==1.0.0",
# ]
# ///

import pandas as pd
import plotly.express as px

data: list[dict] = [
    dict(Start="2025-08-16", Finish="2025-08-30", Task="Data Collection"),
    dict(Start="2025-08-25", Finish="2025-09-15", Task="Identifying Problem"),
    dict(Start="2025-09-13", Finish="2025-09-30", Task="Review & Submission"),
]

df: pd.DataFrame = pd.DataFrame(data)
df.Start = pd.to_datetime(df.Start)
df.Finish = pd.to_datetime(df.Finish)

fig = px.timeline(df, x_start="Start", x_end="Finish", y="Task", color="Task")
fig.update_layout(template="presentation")
fig.update_layout(autosize=False, width=1000, height=300, margin=dict(l=270, r=10))

fig.update_layout(
    showlegend=False,
    title="Gantt Chart",
    bargap=0.45,
)

# This makes the wrong image
fig.write_image("Gantt_Chart.png")

Expected Behavior

I expected my saved file Gantt_Chart.png to show a chart with an x-axis properly showing dates in August and September 2025.

Image

Actual Behavior

What I actually got in Gantt_Chart.png was a chart where the x-axis starts near January 5, 1970.

Image

Working Environment Confirmation

I ran a control test to be sure. I tested my same code in an environment with older libraries:

  • plotly==6.0.0
  • kaleido==0.2.1

In that setup, the bug is gone. My list of confirmations show that the static image Gantt_Chart.png saves perfect with the right 2025 dates.

Image

This points me to think the problem is a regression in the newer code.

Failing Environment

  • Python: 3.13.1
  • pandas: 2.3.1
  • plotly: 6.3.0
  • kaleido: 1.0.0
Linguagem predominante
Python
Estrelas
504
Forks
65
Merge médio
6d 9h
PRs com merge (30d)
2

Preparar o ambiente

Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de plotly/kaleido

Todas as issues de plotly/kaleido

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.