Project-4/python_scripts/test_burn_in.py
2023-12-04 15:09:37 +01:00

97 lines
2.5 KiB
Python

from os import makedirs
from pathlib import Path
import matplotlib.pyplot as plt
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(indir, outdir):
if not (path := Path(outdir)).exists():
makedirs(path)
files = [
"no_burn_in.txt",
"burn_in.txt",
]
labels = [
"Without",
"With",
]
colors = [
"darkred",
"seagreen",
]
figure1, ax1 = plt.subplots()
figure2, ax2 = plt.subplots()
figure3, ax3 = plt.subplots()
figure4, ax4 = plt.subplots()
for file, label, color in zip(files, labels, colors):
t = []
e = []
m = []
CV = []
X = []
with open(Path(indir, file)) as f:
lines = f.readlines()
for line in lines:
l = line.strip().split(",")
t.append(float(l[0]))
e.append(float(l[1]))
m.append(float(l[2]))
CV.append(float(l[3]))
X.append(float(l[4]))
ax1.plot(t, e, label=label, color=color)
ax2.plot(t, m, label=label, color=color)
ax3.plot(t, CV, label=label, color=color)
ax4.plot(t, X, label=label, color=color)
ax1.set_xlabel(r"T $(J/k_{B})$")
ax1.set_ylabel(r"$\langle \epsilon \rangle$ $(J)$")
ax1.legend(title="Burn-in time", loc="upper right")
ax2.set_xlabel(r"T $(J/k_{B})$")
ax2.set_ylabel(r"$\langle |m| \rangle$ $(unitless)$")
ax2.legend(title="Burn-in time", loc="upper right")
ax3.set_xlabel(r"T $(J/k_{B})$")
ax3.set_ylabel(r"$C_{V}$ $(k_{B})$")
ax3.legend(title="Burn-in time", loc="upper right")
ax4.set_xlabel(r"T $(J/k_{B})$")
ax4.set_ylabel(r"$\chi$ $(1/J)$")
ax4.legend(title="Burn-in time", loc="upper right")
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")
plt.close(figure1)
plt.close(figure2)
plt.close(figure3)
plt.close(figure4)
if __name__ == "__main__":
plot(
"./data/hp/test_burn_in_time/",
"./latex/images/test_burn_in",
)