Skip to content
Snippets Groups Projects
save_figure16.py 4.12 KiB
Newer Older
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm
from util import save_fig

from util_dataframe import df, df_proj

cm = matplotlib.cm.get_cmap("inferno", 100)

# Latex
plt.rcParams["text.usetex"] = True
plt.rcParams["text.latex.preamble"] = r"\usepackage{bm}"

def plot_ratio_waves_vs_Fh(ax, data=df, datab=df_proj):
    ax.scatter(
        data["Fh"],
        data["ratio Ewaves"],
        c=np.log10(data["R2"]),
        cmap="inferno",
        edgecolors="k",
        s=40,
        marker="o",
        label=r"Standard Navier-Stokes",
        vmin=-1,
        vmax=4,
    )
    cs = ax.scatter(
        datab["Fh"],
        datab["ratio Ewaves"],
        c=np.log10(datab["R2"]),
        cmap="inferno",
        edgecolors="k",
        s=40,
        marker="^",
        label=r"Without vortical modes",
        vmin=-1,
        vmax=4,
    )
    ax.set_xlim([1e-3, 20])
    ax.set_xticks([1e-3, 1e-2, 1e-1, 1e0, 1e1])
    ax.set_xticklabels([1e-3, 1e-2, 1e-1, 1e0, 1e1], fontsize=14)
    ax.set_xscale("log")
    ax.set_ylim([0, 1])
    ax.set_yticks([0, 0.2, 0.4, 0.6, 0.8, 1.0])
    ax.set_yticklabels(
        [r"$0$", r"$0.2$", r"$0.4$", r"$0.6$", r"$0.8$", r"$1.0$"], fontsize=14
    )
    ax.set_xlabel(r"$F_h$", fontsize=20)
    ax.set_ylabel(r"$\tilde{E}_{\rm wave}$", fontsize=20)
    # ax.grid(True)
    return cs
def plot_ratio_waves_vs_R(ax, data=df, datab=df_proj):
    ax.scatter(
        data["R2"],
        data["ratio Ewaves"],
        c=np.log10(data["Fh"]),
        cmap="inferno",
        edgecolors="k",
        s=40,
        marker="o",
        label=r"Standard Navier-Stokes",
        vmin=-3,
        vmax=1,
    )
    cs = ax.scatter(
        datab["R2"],
        datab["ratio Ewaves"],
        c=np.log10(datab["Fh"]),
        cmap="inferno",
        edgecolors="k",
        s=40,
        marker="^",
        label=r"Without vortical modes",
        vmin=-3,
        vmax=1,
    )
    ax.set_xlim([1e-1, 1e5])
    ax.set_xticks([1e-1, 1e0, 1e1, 1e2, 1e3, 1e4, 1e5])
    ax.set_xticklabels([1e-1, 1e0, 1e1, 1e2, 1e3, 1e4, 1e5], fontsize=14)
    ax.set_xscale("log")
    ax.set_ylim([0, 1])
    ax.set_yticks([0, 0.2, 0.4, 0.6, 0.8, 1.0])
    ax.set_yticklabels(
        [r"$0$", r"$0.2$", r"$0.4$", r"$0.6$", r"$0.8$", r"$1.0$"], fontsize=14
    )
    ax.set_xlabel(r"$\mathcal{R}$", fontsize=20)
    ax.set_ylabel(r"$\tilde{E}_{\rm wave}$", fontsize=20)
    # ax.grid(True)
    return cs


fig, axes = plt.subplots(
    nrows=1, ncols=2, figsize=(10, 1.2 * 3 * 4.5 / 4), constrained_layout=True

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

cs0 = plot_ratio_waves_vs_Fh(ax0, data=df, datab=df_proj)
cs1 = plot_ratio_waves_vs_R(ax1, data=df, datab=df_proj)

# 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["ratio Ewaves"],
    edgecolors="r",
    facecolors="none",
    s=60,
    marker="s",
    linewidths=2,
)
ax0.scatter(
    df_L_proj["Fh"],
    df_L_proj["ratio Ewaves"],
    edgecolors="r",
    facecolors="none",
    s=60,
    marker="s",
    linewidths=2,
)
ax1.scatter(
    df_L["R2"],
    df_L["ratio Ewaves"],
    edgecolors="r",
    facecolors="none",
    s=60,
    marker="s",
    linewidths=2,
)
ax1.scatter(
    df_L_proj["R2"],
    df_L_proj["ratio Ewaves"],
    edgecolors="r",
    facecolors="none",
    s=60,
    marker="s",
    linewidths=2,
ax0.legend(loc="upper right", fontsize=14)
ax0.set_title(r"$\rm (a)$", fontsize=20)
ax1.set_title(r"$\rm (b)$", fontsize=20)
ax1.set_yticklabels("")
ax1.set_ylabel("")

fig.tight_layout()
cbar = fig.colorbar(cs0, ax=ax0, 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
fig.text(0.42, 0.07, r"$\log_{10} \mathcal{R}$", fontsize=20)
cbar = fig.colorbar(cs1, ax=ax1, orientation="vertical")
cbar.set_ticks([-3, -2, -1, 0, 1])
cbar.set_ticklabels([r"$-3$", r"$-2$", r"$-1$", r"$0$", r"$1$"], fontsize=14)
fig.text(0.88, 0.07, r"$\log_{10} F_h$", fontsize=20)


save_fig(fig, "figure16.png")

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