Jun-20-2023, 07:55 AM
I guess something like this is whant you want.
import pandas as pd import plotly.graph_objects as go history = pd.read_csv("sample_data.csv") history["Date"] = pd.to_datetime(history["Date"], format="%Y-%m-%d") history.set_index("Date", inplace=True) recession_dates = history.loc[history["Regime"] == "Recession"].index normal_dates = history.loc[history["Regime"] == "Normal"].index fig = go.Figure() fig.add_trace(go.Scatter(x=history.index, y=history["DJI"], mode="lines")) # Add vertical rectangles for recession periods for start_date, end_date in zip(recession_dates[:-1], recession_dates[1:]): fig.add_vrect( x0=start_date, x1=end_date, fillcolor="red", opacity=0.2, layer="below", line_width=0, ) # Add vertical rectangles for normal periods for start_date, end_date in zip(normal_dates[:-1], normal_dates[1:]): fig.add_vrect( x0=start_date, x1=end_date, fillcolor="green", opacity=0.2, layer="below", line_width=0, ) # Adjust plot size fig.update_layout( autosize=False, width=1400, height=800, ) fig.show()