Files
@ b9db6f3e92be
Branch filter:
Location: AENC/switchchain/triangle_creation_frequency_plots.m - annotation
b9db6f3e92be
2.7 KiB
application/vnd.wolfram.mathematica.package
Add CCM plots
5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 29857512e53b 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 29857512e53b 29857512e53b 29857512e53b 29857512e53b 29857512e53b 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 5cec3a409ef3 29857512e53b 29857512e53b 29857512e53b 29857512e53b 29857512e53b 29857512e53b 29857512e53b 29857512e53b 29857512e53b 29857512e53b 29857512e53b 29857512e53b 29857512e53b 5cec3a409ef3 5cec3a409ef3 29857512e53b 29857512e53b 29857512e53b 29857512e53b 29857512e53b 29857512e53b 29857512e53b 29857512e53b 29857512e53b 5cec3a409ef3 5cec3a409ef3 29857512e53b | (* ::Package:: *)
Needs["ErrorBarPlots`"]
(* ::Section:: *)
(*Data import*)
gsraw=Import[NotebookDirectory[]<>"data/graphdata_timeevol.m"];
(* gsraw=SortBy[gsraw,{#[[1,1]]&,#[[1,2]]&}]; (* Sort by n and then by tau. The {} forces a *stable* sort because otherwise Mathematica sorts also on triangle count and other things. *) *)
gdata=GatherBy[gsraw,{#[[1,2]]&,#[[1,1]]&}];
(* Data format: *)
(* gdata[[ tau index, n index, run index , datatype index ]] *)
(* datatype index:
1: {n,tau}
2: #triangles time sequence
3: degree sequence
*)
nlabels=Map["n = "<>ToString[#]&,gdata[[1,All,1,1,1]]];
taulabels=Map["tau = "<>ToString[#]&,gdata[[All,1,1,1,2]]];
(* Get the runs that have the same degree sequence *)
gdata2=GatherBy[gsraw,{#[[1,2]]&,#[[1,1]]&,#[[3]]&}];
(* gdata[[ tau index, n index, ds run index, MC run index , datatype index ]] *)
(* ::Section:: *)
(*Triangle creation frequencies*)
(* ::Subsection:: *)
(*Plot triangle count over "time" in Markov chain instances*)
numPlots=20;
selectedData=gdata[[1,1]][[-numPlots;;-1]];
measureSkip=1;
minCount=Min[Map[Min[#[[2]]]&,selectedData]];
maxCount=Max[Map[Max[#[[2]]]&,selectedData]];
maxTime=Max[Map[Length[#[[2]]]&,selectedData]];
(* maxTime=30000; *)
skipPts=Max[1,Round[maxTime/500]]; (* Plotting every point is slow. Plot only once per `skipPts` timesteps *)
coarseData=Map[#[[2,1;;maxTime;;skipPts]]&,selectedData];
labels=Map["{n,tau} = "<>ToString[#[[1]]]&,selectedData];
ListPlot[coarseData,Joined->True,PlotRange->{0*minCount,maxCount},DataRange->{0,measureSkip*maxTime},PlotLegends->labels]
(* Map[ListPlot[#,Joined->True,PlotRange\[Rule]{minCount,maxCount},DataRange\[Rule]{0,maxTime}]&,coarseData] *)
differences=Map[Differences[#[[2,25000;;-1]]]&,gdata2,{4}];
differences=Map[Flatten,differences,{3}];
(* For each (n,tau) take 2 degree sequences *)
histograms1=Map[Histogram[#[[{2,1}]],{-25.5,25.5,1},{"Log","Probability"},ImageSize->280]&,differences,{2}];
(* For each (n,tau) take the average over all degree sequences *)
histograms2=Map[Histogram[Flatten[#],{-3.5,3.5,1},"Probability",PlotRange->{0,1},LabelingFunction->(Placed[NumberForm[#,{2,3}],Above]&),ImageSize->280]&,differences,{2}];
TableForm[histograms2,TableHeadings->{taulabels,nlabels}]
{h1,h2,h3}={
Show[histograms1[[2]],PlotLabel->"n=1000, \[Tau]=2.2"],
Show[histograms1[[5]],PlotLabel->"n=1000, \[Tau]=2.5"],
Show[histograms1[[8]],PlotLabel->"n=1000, \[Tau]=2.8"]};
{h1zoomed,h2zoomed,h3zoomed}={
Show[histograms2[[2]],PlotLabel->"n=1000, \[Tau]=2.2"],
Show[histograms2[[5]],PlotLabel->"n=1000, \[Tau]=2.5"],
Show[histograms2[[8]],PlotLabel->"n=1000, \[Tau]=2.8"]};
hcol=GraphicsGrid[Transpose[{{h1,h2,h3},{h1zoomed,h2zoomed,h3zoomed}}]]
Export[NotebookDirectory[]<>"plots/triangle_creation_frequencies_log.pdf",hcol]
|