import numpy as npimport pandas as pdimport plotly.express as pximport morphfrom morph import MorphGlobalContext@morph.funcdef generate_population_data(context: MorphGlobalContext): # Initialize dates = pd.date_range(start="2022-01-01", end="2024-12-31", freq="M").strftime("%Y-%m-%d") states = ["California", "Texas", "Florida", "New York", "Illinois"] # List of states # Generate dummy data data = pd.DataFrame({ "date": np.tile(dates, len(states)), # Repeat dates for all states "state": np.repeat(states, len(dates)), # Repeat each state for all dates "population": np.random.randint(100000, 10000000, size=len(dates) * len(states)) # Generate random population data }) return data@morph.func@morph.load_data("generate_population_data")def filter_plotly_chart(context: MorphGlobalContext): data = context.data["generate_population_data"] start_date = context.vars["start_date"] end_date = context.vars["end_date"] state = context.vars["state"] # apply filter df = data[data["date"].between(start_date, end_date)] if state != "all": df = df[df["state"] == state] fig = px.bar(df, x="date", y="population", color="state", title="Population Over Time by State") return fig
import numpy as npimport pandas as pdimport plotly.express as pximport morphfrom morph import MorphGlobalContext@morph.funcdef generate_population_data(context: MorphGlobalContext): # Initialize dates = pd.date_range(start="2022-01-01", end="2024-12-31", freq="M").strftime("%Y-%m-%d") states = ["California", "Texas", "Florida", "New York", "Illinois"] # List of states # Generate dummy data data = pd.DataFrame({ "date": np.tile(dates, len(states)), # Repeat dates for all states "state": np.repeat(states, len(dates)), # Repeat each state for all dates "population": np.random.randint(100000, 10000000, size=len(dates) * len(states)) # Generate random population data }) return data@morph.func@morph.load_data("generate_population_data")def filter_plotly_chart(context: MorphGlobalContext): data = context.data["generate_population_data"] start_date = context.vars["start_date"] end_date = context.vars["end_date"] state = context.vars["state"] # apply filter df = data[data["date"].between(start_date, end_date)] if state != "all": df = df[df["state"] == state] fig = px.bar(df, x="date", y="population", color="state", title="Population Over Time by State") return fig