ComputingAggregationsUpfront doesn't work well

Your first snippet has copied a typo from Chris’ first draft:

See the linked conversation: Sharing a dataframe between plots

   return {
       'df_1': df_1.to_json(orient='split'),
       'df_2': df_2.to_json(orient='split'),
       'df_3': df_3.to_json(orient='split'),
   }