Skip to content
Snippets Groups Projects
save_figure3.py 3.67 KiB
Newer Older
from curses import keyname

import matplotlib.pyplot as plt
import numpy as np
from util_dataframe import df, df_proj

from util import save_fig

vlabarre's avatar
vlabarre committed
# The two following lines are used to do a figure for reviews # TODO: erase it when the manuscript is accepted for publication
# df = df[df["k_max*eta"] > 1.0].copy()
# df_proj = df_proj[df_proj["k_max*eta"] > 1.0].copy()
plt.rcParams["text.usetex"] = True

fig, axes = plt.subplots(
    ncols=2, nrows=1, figsize=(10, 4.5), constrained_layout=True
)

ax0 = axes[0]
ax1 = axes[1]

ax0.scatter(
    df["Fh"],
    df["Etoro"] / df["E"],
    c=np.log10(df["R2"]),
    cmap="inferno",
    edgecolors="k",
    s=40,
    marker="o",
    vmin=-1,
    vmax=4,
)
ax0.scatter(
    df_proj["Fh"],
    df_proj["Etoro"] / df_proj["E"],
    c=np.log10(df_proj["R2"]),
    cmap="inferno",
    edgecolors="k",
    s=40,
    marker="^",
    vmin=-1,
    vmax=4,
)
ax0.set_xlim([1e-3, 20])
ax0.set_xticks([1e-3, 1e-2, 1e-1, 1e0, 1e1])
ax0.set_xticklabels([1e-3, 1e-2, 1e-1, 1e0, 1e1], fontsize=14)
ax0.set_xscale("log")
ax0.set_ylim([0, 1])
ax0.set_yticks([0, 0.2, 0.4, 0.6, 0.8, 1.0])
ax0.set_yticklabels(
    [r"$0$", r"$0.2$", r"$0.4$", r"$0.6$", r"$0.8$", r"$1.0$"], fontsize=14
)
ax0.set_xlabel(r"$F_h$", fontsize=20)
ax0.set_ylabel(r"$E_{\rm toro}/E$", fontsize=20)
ax0.set_title(r"$\rm (a)$", fontsize=20)
ax0.grid(True)


cs = ax1.scatter(
    df["Fh"],
    (df["Epolo"] - df["EA"]) / (df["Epolo"] + df["EA"]),
    c=np.log10(df["R2"]),
    cmap="inferno",
    edgecolors="k",
    s=40,
    marker="o",
    vmin=-1,
    vmax=4,
    label=r"Standard Navier-Stokes",
)
ax1.scatter(
    df_proj["Fh"],
    (df_proj["Epolo"] - df_proj["EA"]) / (df_proj["Epolo"] + df_proj["EA"]),
    c=np.log10(df_proj["R2"]),
    cmap="inferno",
    edgecolors="k",
    s=40,
    marker="^",
    label=r"Without vortical modes",
)
ax1.legend(loc="lower center", fontsize=14)
ax1.set_xlim([1e-3, 20])
ax1.set_xticks([1e-3, 1e-2, 1e-1, 1e0, 1e1])
ax1.set_xticklabels([1e-3, 1e-2, 1e-1, 1e0, 1e1], fontsize=14)
ax1.set_xscale("log")
ax1.set_ylim([-1, 1])
ax1.set_yticks([-1, -0.5, 0.0, 0.5, 1.0])
ax1.set_yticklabels(
    [r"$-1$", r"$-0.5$", r"$0.0$", r"$0.5$", r"$1.0$"], fontsize=14
)
ax1.set_xlabel(r"$F_h$", fontsize=20)
ax1.set_ylabel(r"$\tilde{\mathcal{D}}$", fontsize=20)
ax1.set_title(r"$\rm (b)$", fontsize=20)
ax1.grid(True)


# Emphasizing the points (N,Rb) = (40,20)
df_L = df[df["N"] == 40]
df_L = df_L[df_L["Rb"] == 20]
df_L_proj = df_proj[df_proj["N"] == 40]
df_L_proj = df_L_proj[df_L_proj["Rb"] == 20]
ax0.scatter(
    df_L["Fh"],
    df_L["Etoro"] / df_L["E"],
    edgecolors="r",
    facecolors="none",
    s=60,
    marker="s",
    linewidths=2,
)
ax0.scatter(
    df_L_proj["Fh"],
    df_L_proj["Etoro"] / df_L_proj["E"],
    edgecolors="r",
    facecolors="none",
    s=60,
    marker="s",
    linewidths=2,
)
ax1.scatter(
    df_L["Fh"],
    (df_L["Epolo"] - df_L["EA"]) / (df_L["Epolo"] + df_L["EA"]),
    edgecolors="r",
    facecolors="none",
    s=60,
    marker="s",
    linewidths=2,
)
ax1.scatter(
    df_L_proj["Fh"],
    (df_L_proj["Epolo"] - df_L_proj["EA"])
    / (df_L_proj["Epolo"] + df_L_proj["EA"]),
    edgecolors="r",
    facecolors="none",
    s=60,
    marker="s",
    linewidths=2,
)

fig.tight_layout()
fig.subplots_adjust(right=0.85, wspace=0.3)
cbar_ax = fig.add_axes([0.88, 0.16, 0.02, 0.75])
cbar = fig.colorbar(cs, cax=cbar_ax, orientation="vertical")
cbar.set_ticks([-1, 0, 1, 2, 3, 4])
cbar.set_ticklabels(
    [r"$-1$", r"$0$", r"$1$", r"$2$", r"$3$", r"$4$"], fontsize=14
)
# cbar.set_label(r"$\log_{10}(\mathcal{R})$", fontsize = 12, rotation=0)


fig.text(0.85, 0.07, r"$\log_{10} \mathcal{R}$", fontsize=20)
save_fig(fig, f"figure3.png")

if __name__ == "__main__":
    plt.show()