from datetime import datetime import plotly.express as px from scipy.signal import savgol_filter # create dataframe from labelled topics, # combine with timestamp from date column time_df = pd.DataFrame( dict( date=timestamps, **dict(zip(analysis_result.topic_names, doc_topic.T / doc_topic.sum(axis=1))) ) ).set_index("date") # group dataframe to monthly frequency time_df = time_df.groupby(by=[time_df.index.month, time_df.index.year]).mean() time_df.index = [datetime(year=y, month=m, day=1) for m, y in time_df.index] time_df = time_df.sort_index() # display dataframe with Plotly for col in time_df.columns: time_df[col] = savgol_filter(time_df[col], 12, 2) fig = px.line( time_df.sort_index(), template="plotly_white", ) fig.show()