Weeks on an x-axes?

I’m creating a line chart based on weekly data, using a custom week calendar (not the ISO standard). However, for weeks with no data, those timespans are not shown on the chart. This can be fixed, but what’s the best way to ensure that all weeks—regardless of whether they contain data—are still displayed on the timeline?

import plotly.express as px
import pandas as pd

# 
daily_df = pd.DataFrame({
    "date": pd.to_datetime(["2025-06-01", "2025-06-02", "2025-06-04"]),
    "value": [10, 20, 30]
})

fig1 = px.line(daily_df, x="date", y="value", markers=True, title="Dagelijkse Data met Gaten")

# --- Weekdata met weeklabels op de x-as ---
week_labels = ["202521", "202522", "202523"]
week_df = pd.DataFrame({
    "weeknr": week_labels,
    "value": [10, 20, 30]
})

fig2 = px.line(week_df, x="weeknr", y="value", markers=True, title="Wekelijkse Data met Weeklabels")

fig1.show()
fig2.show()

Hi @marvy , I don’t know if it’s what you exactly want, but maybe datetime library can solve your problem:

import plotly.express as px
import pandas as pd
from datetime import datetime

# Input list of date strings
date_strings = ["2025-06-01", "2025-06-02", "2025-06-04"]

# Convert to "June 1, 2025" format
formatted_dates = [
    datetime.strptime(date, "%Y-%m-%d").strftime("%B %-d, %Y") for date in date_strings
]

# 
daily_df = pd.DataFrame({
    "date": formatted_dates,
    "value": [10, 20, 30]
})

fig1 = px.line(daily_df, 
               x="date", 
               y="value", 
               markers=True, 
               title="Dagelijkse Data met Gaten")

# --- Weekdata met weeklabels op de x-as ---
week_labels = ["202521", "202522", "202523"]
week_df = pd.DataFrame({
    "weeknr": week_labels,
    "value": [10, 20, 30]
})

fig2 = px.line(week_df, 
               x="weeknr", 
               y="value", 
               markers=True, 
               title="Wekelijkse Data met Weeklabels")


fig1.show()
fig2.show()

Hi @marvy , I missunderstood your question. If I’m rights is the fig2 the one you want to change. You can do that:

import plotly.express as px
import pandas as pd
from datetime import datetime

# 
daily_df:   pd.DataFrame    = pd.DataFrame({
    "date":     pd.to_datetime(["2025-06-01", "2025-06-02", "2025-06-04"]),
    "value":    [10, 20, 30]
})

fig1            = px.line(daily_df, 
                          x         = "date", 
                          y         = "value", 
                          markers   = True, 
                          title     = "Dagelijkse Data met Gaten")

# --- Weekdata met weeklabels op de x-as ---
week_labels     = ["202521", "202522", "202524"]
formatted_dates = []

for week_date in week_labels:
    year        = int(week_date[:4])
    week        = int(week_date[4:])
    date_obj    = datetime.fromisocalendar(year, week, 1)
    formatted_dates.append(f"{date_obj.year}-{date_obj.month}-{date_obj.day}")

print(formatted_dates)
week_df:    pd.DataFrame    = pd.DataFrame({
    "date":     pd.to_datetime(formatted_dates),
    "value":    [10, 20, 30]
})

fig2            = px.line(week_df, 
                          x         = "date", 
                          y         = "value", 
                          markers   = True, 
                          title     = "Wekelijkse Data met Weeklabels")


fig1.show()
fig2.show()