Skip to content

Export to png ; Export to html/png requires explicit range specified for dates (pd.DateTimeIndex) #396

@shern2

Description

@shern2
kaleido==1.0.0
plotly==6.3.0

The Scatter plot below using pandas dates look fine on the Notebook, but

  1. When exporting to html and png, the range needs to be set explicitly range=[dates.min(), dates.max()]. Otherwise the default starts from Jan 2000.
  2. For png export, after the explicit fix above, the x-axis range is corrected, but the line disappeared.

There's a workaround which is to convert the dates to str for the x data values first x=dates.strftime("%Y-%m-%d") but this is a gotcha.

    # Sample time series data
    dates = pd.date_range(start="2024-01-01", periods=30, freq="D")
    values = [20 + i + (i % 7) * 3 for i in range(30)]  # Trending data with weekly pattern

    # Create line chart with Graph Objects
    fig = go.Figure()

    fig.add_trace(
        go.Scatter(
            x=dates,  # Plotly handles pandas DatetimeIndex directly
            y=values,
            mode="lines+markers",
            name="Daily Values",
            line=dict(color="blue", width=2),
            marker=dict(size=4),
        )
    )

    # Update layout with explicit date range
    fig.update_layout(
        title="Basic Line Chart - Graph Objects API",
        xaxis_title="Date",
        yaxis_title="Value",
        width=800,
        height=600,
        showlegend=True,
        xaxis=dict(
            type="date",
            # Explicitly set the date range for html and image export
            range=[dates.min(), dates.max()]
        ),
    )

    # Save as HTML and PNG
    fig.write_html(data_dir / "01_basic_line.html")
    fig.write_image(data_dir / "01_basic_line.png")

Metadata

Metadata

Assignees

Labels

P2needed for current cyclebugsomething broken

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions