Customize Time Series Plots
  • AI Chat
  • Code
  • Report
  • Beta
    Spinner

    Customize Time Series Plots

    Customizing your time series plots by highlighting important events in time is a great way to draw attention to key insights and communicate them efficiently.

    # Load packages
    import pandas as pd
    import matplotlib.pyplot as plt
    
    # Upload your data as CSV and load as data frame
    df = pd.read_csv(
        "data.csv",
        parse_dates=["datestamp"],  # Tell pandas which column(s) to parse as dates
        index_col="datestamp", # Use a date column as your index
    )  
    
    # Specify a particular subset to analyze
    sub = df["2006-01-01":"2010-01-01"]
    sub.head()
    
    # See available styles plt.style.available
    plt.style.use("ggplot")
    
    ax = sub.plot(y=["Agriculture", "Finance", "Information"], figsize=(12, 7))
    
    # Customize title and labels
    ax.set_title("Unemployment rate over time")
    ax.set_ylabel("Unemployment rate in %")
    ax.set_xlabel("Date")
    
    # Add a vertical red shaded region
    ax.axvspan(
        "2007-01-01",  # From
        "2008-01-12",  # To
        color="yellow",  # Set color of region
        alpha=0.3,  # Set Transparency
    )
    # Add a vertical line
    ax.axvline("2008-09-01", color="red", linestyle="--")
    
    # Add a horizontal green shaded region
    ax.axhspan(
        5.5,  # From
        6.5,  # To
        color="green",  # Set color of region
        alpha=0.3,  # Set Transparency
    )
    # Add a horizontal line
    ax.axhline(13, color="orange", linestyle="--")
    
    
    # Annotate your figure
    plt.annotate(
        "Healthy unemployment rate",  # Annotation text
        xy=("2010-01-01", 5.7),  # Annotation position
        xycoords="data",  # The coordinate system that xy is given in
        color="black",  # Text Color
    )
    
    plt.annotate(
        "Financial Crisis",  # Annotation text
        xy=("2007-04-01", 17.5),  # Annotation position
        xycoords="data",  # The coordinate system that xy is given in
        color="black",  # Text Color
    )
    plt.show()