package Ġde . al x gr k . data . plots Ċ Ċ import Ġde . al x gr k . data . Analy se Ċ import Ġde . al x gr k . data . Session Ċ import Ġde . al x gr k . data . UserId Ċ import Ġk science . plot ly . Plot Ċ import Ġk science . plot ly . Plot ly Ċ import Ġk science . plot ly . layout Ċ import Ġk science . plot ly . models . Axis Type Ċ import Ġk science . plot ly . models . Bar Ċ import Ġk science . plot ly . models . Bar Mode Ċ import Ġk science . plot ly . models . Text Position Ċ Ċ class ĠInteraction Distribution Per Session Plot Ġ: ĠChart Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠAnaly se . create Plot ( sessions Per UserId : ĠMap < UserId , ĠList < Session >> ): ĠPlot Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġinteractions Per User Ġ= Ġsessions Per UserId ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ( userId , Ġsessions ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserId Ġto Ġsessions . fold ( Interactions ( sessions . size )) Ġ{ Ġi , Ġsession Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsession . session Events In Ch rono logical Order . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi . increase Count For ( it . target ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toMap () ĊĊĠĠĠĠĠĠĠ Ġval Ġbars Ġ= Ġinteractions Per User . entries . map Indexed Ġ{ Ġi , Ġ( userId , Ġinteractions ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBar Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx . set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" likes Ġ/ Ġsession ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ret weets Ġ/ Ġsession ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" post ings Ġ/ Ġsession ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" follow By T weets Ġ/ Ġsession ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" follow s Ġ/ Ġsession ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" click s On Media Ġ/ Ġsession ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" click s On Has ht ag Ġ/ Ġsession ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" open Details Views Ġ/ Ġsession ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" visit Authors Profiles Ġ/ Ġsession " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfreq s Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinteractions . likes Per Session , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinteractions . ret weets Per Session , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinteractions . post ings Per Session , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinteractions . follow sBy Tweet Per Session , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinteractions . follow s Per Session , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinteractions . media Click s Per Session , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinteractions . hasht ag Click s Per Session , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinteractions . detail Views Per Session , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinteractions . author Profile Click s Per Session , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy . set ( freq s ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠuserId . id . substring ( 0 , Ġ 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtexts List Ġ= Ġfreq s . map Ġ{ Ġ"% . 3 f ". format ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtext position Ġ= ĠText Position . outside ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmarker Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor ( i . to Random Color ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġaverage Of ( prop : Ġ( Interactions ) Ġ-> ĠDouble ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinteractions Per User . values . map Ġ{ Ġprop ( it ) Ġ}. filter Ġ{ Ġit Ġ> Ġ 0 Ġ}. average () ĊĊĠĠĠĠĠĠĠ Ġval Ġaverage Bar Ġ= ĠBar Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx . set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" likes Ġ/ Ġsession ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ret weets Ġ/ Ġsession ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" post ings Ġ/ Ġsession ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" follow By T weets Ġ/ Ġsession ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" follow s Ġ/ Ġsession ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" click s On Media Ġ/ Ġsession ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" click s On Has ht ag Ġ/ Ġsession ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" open Details Views Ġ/ Ġsession ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" visit Authors Profiles Ġ/ Ġsession " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfreq s Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaverage Of Ġ{ Ġit . likes Per Session Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaverage Of Ġ{ Ġit . ret weets Per Session Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaverage Of Ġ{ Ġit . post ings Per Session Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaverage Of Ġ{ Ġit . follow sBy Tweet Per Session Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaverage Of Ġ{ Ġit . follow s Per Session Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaverage Of Ġ{ Ġit . media Click s Per Session Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaverage Of Ġ{ Ġit . hasht ag Click s Per Session Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaverage Of Ġ{ Ġit . detail Views Per Session Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaverage Of Ġ{ Ġit . author Profile Click s Per Session Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy . set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfreq s ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Average Ġover Ġall ĠUsers " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtexts List Ġ= Ġfreq s . map Ġ{ Ġ"% . 3 f ". format ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtext position Ġ= ĠText Position . outside ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarker Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor (" rgb ( 1 2 9 , Ġ 2 4 , Ġ 7 5 )") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠPlot ly . plot Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtraces ( average Bar , Ġ* bars . to Typed Array ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Interactions Ġper ĠSession Ġby ĠInteraction ĠType " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ 8 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx axis Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Interaction ĠTypes " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy axis Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Interactions Ġper ĠSession " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠAxis Type . log ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġautor ange Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlegend Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġ 1 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbgcolor (" rgba ( 2 5 5 , Ġ 2 5 5 , Ġ 2 5 5 , Ġ 0 )") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġborder color (" rgba ( 2 5 5 , Ġ 2 5 5 , Ġ 2 5 5 , Ġ 0 )") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar mode Ġ= ĠBar Mode . group ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb arg ap Ġ= Ġ 0 . 1 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb arg roup gap Ġ= Ġ 0 . 0 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ