def initialize_graphs()

in polymetis/python/scripts/viz.py [0:0]


def initialize_graphs(viz, height=1000):
    while viz.state_queue.empty():
        print("Waiting for states...")
        time.sleep(1)

    dataframes = viz.process_queue()
    num_dataframes = len(dataframes)
    max_columns = max([len(df.columns) for df in dataframes.values()])

    # Generate subplot titles
    subplot_titles = []
    row = 1
    for df_name, df in dataframes.items():
        col = 1
        for column in df.columns:
            subplot_titles.append(f"{df_name}: {column}")
            col += 1
        for i in range(col, max_columns + 1):
            subplot_titles.append("")
        row += 1

    fig = plotly.subplots.make_subplots(
        rows=num_dataframes, cols=max_columns, subplot_titles=subplot_titles
    )
    fig.update_layout(height=height, showlegend=False)

    # Add graph objects
    row = 1
    for df_name, df in dataframes.items():
        datetimes = [x.strftime("%H:%M:%S") for x in df.index]
        col = 1
        for column in df.columns:
            fig.append_trace(
                plotly.graph_objects.Scatter(
                    x=datetimes, y=df[column], line=dict(color="black")
                ),
                row=row,
                col=col,
            )
            col += 1
        row += 1

    return fig