(* ::Package:: *) Needs["ErrorBarPlots`"] (* ::Section:: *) (*Visualize graphs*) gsraw=Import[NotebookDirectory[]<>"graphdata.m"]; ListPlot[gsraw[[2]],Joined->True,PlotRange->All,AxesLabel->{"Step","Triangles"}] gs=Map[Graph[#,GraphLayout->"CircularEmbedding"]&,gsraw[[1]]]; gs2=Map[Graph[#,GraphLayout->Automatic]&,gsraw[[1]]]; Grid[Partition[gs,10],Frame->All] (* ::Section:: *) (*Plot triangle counts*) (* ::Subsection:: *) (*Data import and data merge*) gsraw=Import[NotebookDirectory[]<>"graphdata_merged.m"]; newData=Import[NotebookDirectory[]<>"graphdata_tau_multi3.m"]; mergedData=Import[NotebookDirectory[]<>"graphdata_merged.m"]; Export[NotebookDirectory[]<>"graphdata_merged_new.m",Join[mergedData,newData]] (* ::Subsection:: *) (*Plot empirical distribution of maximum degree*) maxDegrees=Map[{#[[1]],Max[#[[3]]]}&,gsraw]; maxDegrees=GatherBy[maxDegrees,{#[[1,2]]&,#[[1,1]]&}]; Histogram[maxDegrees[[1,-1,All,2]],PlotRange->{{0,1100},{0,200}},AxesLabel->{"d_max","frequency"}] Histogram[maxDegrees[[2,-1,All,2]],PlotRange->{{0,1100},{0,200}},AxesLabel->{"d_max","frequency"}] Histogram[maxDegrees[[3,-1,All,2]],PlotRange->{{0,1100},{0,200}},AxesLabel->{"d_max","frequency"}] (* ::Subsection:: *) (*Plot triangle count over "time" in Markov chain instances*) numPlots=10; minCount=Min[Map[Min[#[[2]]]&,gsraw[[1;;numPlots]]]]; maxCount=Max[Map[Max[#[[2]]]&,gsraw[[1;;numPlots]]]]; maxTime=Max[Map[Length[#[[2]]]&,gsraw[[1;;numPlots]]]]; skipPts=Round[maxTime/100]; (* Plotting every point is slow. Plot only once per `skipPts` timesteps *) coarseData=Map[#[[2,1;;-1;;skipPts]]&,gsraw[[1;;numPlots]]]; labels=Map["{n,tau} = "<>ToString[#[[1]]]&,gsraw[[1;;numPlots]]]; ListPlot[coarseData,Joined->True,PlotRange->{minCount,maxCount},DataRange->{0,maxTime},PlotLegends->labels] (* Map[ListPlot[#,Joined->True,PlotRange\[Rule]{minCount,maxCount},DataRange\[Rule]{0,maxTime}]&,coarseData] *) (* ::Subsection:: *) (*Plot average #triangles vs n*) averages=Map[{#[[1]],Mean[#[[2,1;;-1]]]}&,gsraw]; averagesGrouped=GatherBy[averages,{#[[1,1]]&,#[[1,2]]&}]; (* averagesGroupes[[ n index, tau index , run index, {ntau, tri, ds} ]] *) averagesGrouped=Transpose[averagesGrouped]; (* averagesGrouped[[ tau index, n index, run index ]] *) nlabels=Map["n = "<>ToString[#]&,averagesGrouped[[1,All,1,1,1]]]; taulabels=Map["tau = "<>ToString[#]&,averagesGrouped[[All,1,1,1,2]]]; averagesErrorBars=Map[ {{#[[1,1,1]],Mean[#[[All,2]]]}, ErrorBar[StandardDeviation[#[[All,2]]]/Sqrt[Length[#]]] }&,averagesGrouped,{2}]; ErrorListPlot[averagesErrorBars,Joined->True,PlotMarkers->Automatic,AxesLabel->{"n","\[LeftAngleBracket]triangles\[RightAngleBracket]"},PlotLegends->taulabels] (* ::Subsection:: *) (*Plot #triangles distribution for specific (n,tau)*) histograms=Map[Histogram[#[[All,2]]]&,averagesGrouped,{2}]; nlabels=Map["n = "<>ToString[#]&,averagesGrouped[[1,All,1,1,1]]]; taulabels=Map["tau = "<>ToString[#]&,averagesGrouped[[All,1,1,1,2]]]; TableForm[histograms,TableHeadings->{taulabels,nlabels}]