Updated scripts and figures

This commit is contained in:
Janita Willumsen 2023-11-27 20:22:28 +01:00
parent 2ba820e85f
commit a7198ca019
31 changed files with 103 additions and 40 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -16,22 +16,23 @@ plt.rcParams.update(params)
def plot_from_file(): def plot_from_file():
files = [ files = [
"output/burn_in_time/unordered_1_0_1421110368.txt", # "output/burn_in_time/unordered_1_0_1421110368.txt",
"output/burn_in_time/ordered_1_0_611577739.txt", # "output/burn_in_time/ordered_1_0_611577739.txt",
"output/burn_in_time/unordered_2_4_1212892317.txt", "output/burn_in_time/unordered_2_4_1212892317.txt",
"output/burn_in_time/ordered_2_4_2408603856.txt", "output/burn_in_time/ordered_2_4_2408603856.txt",
] ]
labels = [ labels = [
"1.0, unordered", "Unordered",
"1.0, urdered", "Ordered",
"2.4, unordered", # "2.4, unordered",
"2.4, ordered" # "2.4, ordered"
] ]
colors = [ colors = [
"seagreen",
"darkred", "darkred",
"darkgoldenrod", "seagreen",
"steelblue" # "steelblue",
# "darkred",
# "darkgoldenrod",
] ]
fig1, ax1 = plt.subplots() fig1, ax1 = plt.subplots()
@ -54,13 +55,13 @@ def plot_from_file():
ax2.plot(t, magnetization, label=f"{label}", color=color) ax2.plot(t, magnetization, label=f"{label}", color=color)
ax1.set_xlabel("t") ax1.set_xlabel("t")
ax1.set_ylabel(r"$\langle \epsilon \rangle \ [J]$") ax1.set_ylabel(r"$\langle \epsilon \rangle$")
ax1.legend(title="Initial state", loc="upper right") ax1.legend(title="Initial state", loc="upper right")
fig1.savefig("../latex/images/burn_in_time_energy.pdf", bbox_inches="tight") fig1.savefig("../latex/images/burn_in_time_energy_2_4.pdf", bbox_inches="tight")
ax2.set_ylabel(r"$\langle |m| \rangle$") ax2.set_ylabel(r"$\langle |m| \rangle$")
ax2.set_xlabel("t") ax2.set_xlabel("t")
ax2.legend(title="Initial state", loc="upper right") ax2.legend(title="Initial state", loc="upper right")
fig2.savefig("../latex/images/burn_in_time_magnetization.pdf", bbox_inches="tight") fig2.savefig("../latex/images/burn_in_time_magnetization_2_4.pdf", bbox_inches="tight")
def main(): def main():
plot_from_file() plot_from_file()

View File

@ -3,6 +3,21 @@ from pathlib import Path
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import numpy as np import numpy as np
import seaborn as sns
from scipy.stats import norm
sns.set_theme()
params = {
"font.family": "Serif",
"font.serif": "Roman",
"text.usetex": True,
"axes.titlesize": "large",
"axes.labelsize": "large",
"xtick.labelsize": "large",
"ytick.labelsize": "large",
"legend.fontsize": "medium"
}
plt.rcParams.update(params)
def plot(infile, outfile): def plot(infile, outfile):
@ -10,16 +25,26 @@ def plot(infile, outfile):
os.makedirs(outdir) os.makedirs(outdir)
figure1, ax1 = plt.subplots() figure1, ax1 = plt.subplots()
arr = [] eps = []
with open(infile) as f: with open(infile) as f:
lines = f.readlines() lines = f.readlines()
for line in lines: for line in lines:
vals = line.strip().split(",") vals = line.strip().split(",")
arr.append(float(vals[0])) eps.append(float(vals[0]))
ax1.hist(arr, np.arange(min(arr), max(arr) + 0.02, 0.02), density=True, ec="black") ax1.hist(eps, np.arange(min(eps), max(eps) + 0.02, 0.02), color="steelblue", density=True, ec="white", lw=0.2)
ax1.set_xlabel(r"$\epsilon$")
ax1.set_ylabel("Density")
figure1.savefig(outfile) mu, sigma = np.mean(eps), np.std(eps)
x = np.arange(min(eps), max(eps) + 0.02, 0.02)
stats = (f"$\\langle \\epsilon \\rangle$ = {np.mean(eps):.4f}\n"
f"Var$(\\epsilon)$ = {np.var(eps):.4f}")
bbox = dict(boxstyle="round", pad=0.3, fc="white", ec="white", alpha=0.5)
ax1.text(0.95, 0.9, stats, bbox=bbox, transform=ax1.transAxes, ha="right", va="center")
ax1.plot(x, norm.pdf(x, mu, sigma), color="mediumseagreen")
figure1.savefig(outfile, bbox_inches="tight")
if __name__ == "__main__": if __name__ == "__main__":

View File

@ -3,6 +3,20 @@ from pathlib import Path
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import numpy as np import numpy as np
from scipy.stats import linregress from scipy.stats import linregress
import seaborn as sns
sns.set_theme()
params = {
"font.family": "Serif",
"font.serif": "Roman",
"text.usetex": True,
"axes.titlesize": "large",
"axes.labelsize": "large",
"xtick.labelsize": "large",
"ytick.labelsize": "large",
"legend.fontsize": "medium"
}
plt.rcParams.update(params)
def plot_phase_transition(indir, outdir): def plot_phase_transition(indir, outdir):
@ -14,11 +28,18 @@ def plot_phase_transition(indir, outdir):
"size_100.txt", "size_100.txt",
] ]
labels = [ labels = [
"L = 20", "20",
"L = 40", "40",
"L = 60", "60",
"L = 80", "80",
"L = 100", "100",
]
colors = [
"indianred",
"sandybrown",
"mediumseagreen",
"steelblue",
"mediumpurple"
] ]
figure1, ax1 = plt.subplots() figure1, ax1 = plt.subplots()
@ -32,7 +53,7 @@ def plot_phase_transition(indir, outdir):
Tc = [] Tc = []
size = 20 size = 20
for file, label in zip(files, labels): for file, label, color in zip(files, labels, colors):
t = [] t = []
e = [] e = []
m = [] m = []
@ -56,29 +77,45 @@ def plot_phase_transition(indir, outdir):
# Append the critical temp for the current lattice size # Append the critical temp for the current lattice size
Tc.append(t[X.index(max(X))]) Tc.append(t[X.index(max(X))])
ax1.plot(t, e, label=label) ax1.plot(t, e, label=label, color=color)
ax2.plot(t, m, label=label) ax2.plot(t, m, label=label, color=color)
ax3.plot(t, CV, label=label) ax3.plot(t, CV, label=label, color=color)
ax4.plot(t, X, label=label) ax4.plot(t, X, label=label, color=color)
# Attempt linear regression # Attempt linear regression
x = np.linspace(0, 100, 1001) x = np.linspace(0, 1/20, 1001)
regression = linregress(L, Tc) inv_L = [1/x for x in L]
regression = linregress(inv_L, Tc)
f = lambda x: regression[0] * x + regression[1] f = lambda x: regression[0] * x + regression[1]
ax5.scatter(L, Tc)
ax5.plot(x, f(x), label=f"m = {regression[0]}")
figure1.legend() stats = (f"$\\beta_0 = $ {regression[1]:.4f}\n"
figure2.legend() f"$\\beta_1 = $ {regression[0]:.4f}")
figure3.legend() bbox = dict(boxstyle="round", pad=0.3, fc="white", alpha=0.5)
figure4.legend() ax5.text(0.64, 0.64, stats, bbox=bbox, transform=ax1.transAxes, ha="right", va="center")
figure5.legend() ax5.scatter(inv_L, Tc, color="steelblue")
# txt = f"$\\beta_1$ {regression[0]:.4f} \n$\\beta_0$ {regression[1]:.4f}"
ax5.plot(x, f(x), color="mediumseagreen", linestyle="dashed")
figure1.savefig(Path(outdir, "energy.pdf")) ax1.legend(title="Lattice size", loc="upper right")
figure2.savefig(Path(outdir, "magnetization.pdf")) ax1.set_xlabel(r"$T$ $[J / k_{B}]$")
figure3.savefig(Path(outdir, "heat_capacity.pdf")) ax1.set_ylabel(r"$\langle \epsilon \rangle$")
figure4.savefig(Path(outdir, "susceptibility.pdf")) ax2.legend(title="Lattice size", loc="upper right")
figure5.savefig(Path(outdir, "linreg.pdf")) ax2.set_xlabel(r"$T$ $[J / k_{B}]$")
ax2.set_ylabel(r"$\langle |m| \rangle$")
ax3.legend(title="Lattice size", loc="upper right")
ax3.set_xlabel(r"$T$ $[J / k_{B}]$")
ax2.set_ylabel(r"$C_{V}$ $[k_{B}]$")
ax4.legend(title="Lattice size", loc="upper right")
ax4.set_xlabel(r"$T$ $[J / k_{B}]$")
ax4.set_ylabel(r"$\chi$ $[1 / J]$")
ax5.set_xlabel(r"$1 / L$")
ax5.set_ylabel(r"$T_C(L)$")
figure1.savefig(Path(outdir, "energy.pdf"), bbox_inches="tight")
figure2.savefig(Path(outdir, "magnetization.pdf"), bbox_inches="tight")
figure3.savefig(Path(outdir, "heat_capacity.pdf"), bbox_inches="tight")
figure4.savefig(Path(outdir, "susceptibility.pdf"), bbox_inches="tight")
figure5.savefig(Path(outdir, "linreg.pdf"), bbox_inches="tight")
plt.close(figure1) plt.close(figure1)
plt.close(figure2) plt.close(figure2)