Forked from
Klaus Böhnlein / dune-microstructure
474 commits behind, 276 commits ahead of the upstream repository.
-
Klaus Böhnlein authoredKlaus Böhnlein authored
generic_plotScript.py 4.63 KiB
import numpy as np
import matplotlib.pyplot as plt
import math
import os
import subprocess
import fileinput
import re
import sys
import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.cm as cm
import matplotlib.ticker as ticker
from matplotlib.ticker import MultipleLocator,FormatStrFormatter,MaxNLocator
import seaborn as sns
import matplotlib.colors as mcolors
# ----------------------------------------------------
# --- Define Plot style:
# plt.style.use("seaborn-white")
plt.style.use("seaborn-pastel")
# plt.style.use("seaborn-colorblind")
# plt.style.use("seaborn")
mpl.rcParams['text.usetex'] = True
mpl.rcParams["font.family"] = "serif"
mpl.rcParams["font.size"] = "14"
mpl.rcParams['xtick.bottom'] = True
mpl.rcParams['xtick.major.size'] = 3
mpl.rcParams['xtick.minor.size'] = 1.5
mpl.rcParams['xtick.major.width'] = 0.75
mpl.rcParams['ytick.left'] = True
mpl.rcParams['ytick.major.size'] = 3
mpl.rcParams['ytick.minor.size'] = 1.5
mpl.rcParams['ytick.major.width'] = 0.75
#Adjust grid:
mpl.rcParams['axes.labelpad'] = 3
mpl.rcParams['grid.linewidth'] = 0.25
mpl.rcParams['grid.alpha'] = 0.9 # 0.75
mpl.rcParams['grid.linestyle'] = '-'
mpl.rcParams['grid.color'] = 'gray'#'black'
mpl.rcParams['text.latex.preamble'] = r'\usepackage{amsfonts}' # Makes Use of \mathbb possible.
# ----------------------------------------------------------------------------------------
width = 5.79
height = width / 1.618 # The golden ratio.
# fig = plt.figure() #main
fig, ax = plt.subplots(figsize=(width,height))
meshsize = [1/2, 1/4, 1/8, 1/16,1/32, 1/64, 1/128] # mesh-size
CC_L2 = [6.894e-01,3.235e-02,8.298e-03 ,2.129e-03,5.370e-04, 1.340e-04 , 3.400e-05] #L2-Error
CC_H1 = [6.580e+00,7.599e-01, 3.698e-01,1.839e-01, 9.181e-02, 4.589e-02, 2.294e-02] #H1-Error
# --------------- Plot Lines + Scatter -----------------------
line_1 = ax.plot(meshsize, CC_L2, # data
# color='forestgreen', # linecolor
marker='D', # each marker will be rendered as a circle
markersize=6, # marker size
markerfacecolor='darkorange', # marker facecolor
markeredgecolor='black', # marker edgecolor
markeredgewidth=1, # marker edge width
# linestyle='dashdot', # line style will be dash line
linewidth=1.5, # line width
zorder=3,
label = r"$CC_{L_2}$")
line_2 = ax.plot(meshsize, CC_H1, # data
# color='orangered', # linecolor
marker='o', # each marker will be rendered as a circle
markersize=6, # marker size
markerfacecolor='cornflowerblue', # marker facecolor
markeredgecolor='black', # marker edgecolor
markeredgewidth=1, # marker edge width
# linestyle='--', # line style will be dash line
linewidth=1.5, # line width
zorder=3,
alpha=0.8, # Change opacity
label = r"$CC_{H_1}$")
# --- Plot order line
x = np.linspace(0.01,1/2,100)
y = CC_L2[0]*x**2
OrderLine = ax.plot(x,y,linestyle='--', label=r"$\mathcal{O}(h)$")
Fix_value = 7.674124
l3 = plt.axhline(y = Fix_value, color = 'black', linewidth=0.75, linestyle = 'dashed')
# --------------- Set Axes -----------------------
ax.set_title(r"Some Computation $(\mathbb{R}\to \mathbb{R})$") # Plot - Title
plt.xscale('log') # Use Logarithmic-Scale
plt.yscale('log')
ax.set_xlabel(r"Mesh size", labelpad=4)
ax.set_ylabel(r"Error $||u-u_h ||_{L^2}$", labelpad=4)
plt.tight_layout()
# --- Set Line labels
# line_labels = [r"$CC_{L_2}$",r"$CC_{H_1}$", r"$\mathcal{O}(h)$"]
# --- Set Legend
legend = ax.legend()
# legend = fig.legend([line_1 , line_2, OrderLine],
# labels = line_labels,
# bbox_to_anchor=[0.97, 0.50],
# # bbox_to_anchor=[0.97, 0.53],
# # loc='center',
# ncol=1, # Number of columns used for legend
# # borderaxespad=0.15, # Small spacing around legend box
# frameon=True,
# prop={'size': 10})
frame = legend.get_frame()
frame.set_edgecolor('black')
# --- Adjust left/right spacing:
# plt.subplots_adjust(right=0.81)
# plt.subplots_adjust(left=0.11)
# ---------- Output Figure as pdf:
fig.set_size_inches(width, height)
fig.savefig('Plot_Template.pdf')
# plt.show()