From 658b5011fd007bb0e79983ddd4a12bb2dd671ba0 Mon Sep 17 00:00:00 2001 From: weygoldt <88969563+weygoldt@users.noreply.github.com> Date: Sat, 14 Jan 2023 20:10:49 +0100 Subject: [PATCH] added plotstyle and poster template --- .vscode/settings.json | 3 - code/modules/plotstyle.py | 368 ++++++++++++++++++++++++++++++++++++++ poster/main.pdf | Bin 0 -> 44224 bytes poster/main.tex | 83 +++++++++ poster/packages.tex | 11 ++ poster/style.tex | 119 ++++++++++++ 6 files changed, 581 insertions(+), 3 deletions(-) delete mode 100644 .vscode/settings.json create mode 100644 code/modules/plotstyle.py create mode 100644 poster/main.pdf create mode 100644 poster/main.tex create mode 100644 poster/packages.tex create mode 100644 poster/style.tex diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 3516cb9..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "python.formatting.provider": "autopep8" -} \ No newline at end of file diff --git a/code/modules/plotstyle.py b/code/modules/plotstyle.py new file mode 100644 index 0000000..0f7fd5f --- /dev/null +++ b/code/modules/plotstyle.py @@ -0,0 +1,368 @@ +import cmocean as cmo +import matplotlib.pyplot as plt +import numpy as np +from cycler import cycler +from matplotlib.colors import ListedColormap + + +def PlotStyle() -> None: + class style: + + # lightcmap = cmocean.tools.lighten(cmocean.cm.haline, 0.8) + + # units + cm = 1 / 2.54 + mm = 1 / 25.4 + + # colors + black = "#111116" + white = "#e0e4f7" + gray = "#6c6e7d" + pink = "#f5c2e7" + purple = "#cba6f7" + red = "#f38ba8" + maroon = "#eba0ac" + orange = "#fab387" + yellow = "#f9e2af" + green = "#a6e3a1" + teal = "#94e2d5" + sky = "#89dceb" + sapphire = "#74c7ec" + blue = "#89b4fa" + lavender = "#b4befe" + + @classmethod + def lims(cls, track1, track2): + """Helper function to get frequency y axis limits from two fundamental frequency tracks. + + Args: + track1 (array): First track + track2 (array): Second track + start (int): Index for first value to be plotted + stop (int): Index for second value to be plotted + padding (int): Padding for the upper and lower limit + + Returns: + lower (float): lower limit + upper (float): upper limit + + """ + allfunds_tmp = ( + np.concatenate( + [ + track1, + track2, + ] + ) + .ravel() + .tolist() + ) + lower = np.min(allfunds_tmp) + upper = np.max(allfunds_tmp) + return lower, upper + + @classmethod + def circled_annotation(cls, text, axis, xpos, ypos, padding=0.25): + axis.text( + xpos, + ypos, + text, + ha="center", + va="center", + zorder=1000, + bbox=dict( + boxstyle=f"circle, pad={padding}", fc="white", ec="black", lw=1 + ), + ) + + @classmethod + def fade_cmap(cls, cmap): + + my_cmap = cmap(np.arange(cmap.N)) + my_cmap[:, -1] = np.linspace(0, 1, cmap.N) + my_cmap = ListedColormap(my_cmap) + + return my_cmap + + @classmethod + def hide_ax(cls, ax): + ax.xaxis.set_visible(False) + plt.setp(ax.spines.values(), visible=False) + ax.tick_params(left=False, labelleft=False) + ax.patch.set_visible(False) + + @classmethod + def set_boxplot_color(cls, bp, color): + plt.setp(bp["boxes"], color=color) + plt.setp(bp["whiskers"], color=color) + plt.setp(bp["caps"], color=color) + plt.setp(bp["medians"], color=color) + + @classmethod + def label_subplots(cls, labels, axes, fig): + for axis, label in zip(axes, labels): + X = axis.get_position().x0 + Y = axis.get_position().y1 + fig.text(X, Y, label, weight="bold") + + @classmethod + def letter_subplots( + cls, axes=None, letters=None, xoffset=-0.1, yoffset=1.0, **kwargs + ): + """Add letters to the corners of subplots (panels). By default each axis is + given an uppercase bold letter label placed in the upper-left corner. + Args + axes : list of pyplot ax objects. default plt.gcf().axes. + letters : list of strings to use as labels, default ["A", "B", "C", ...] + xoffset, yoffset : positions of each label relative to plot frame + (default -0.1,1.0 = upper left margin). Can also be a list of + offsets, in which case it should be the same length as the number of + axes. + Other keyword arguments will be passed to annotate() when panel letters + are added. + Returns: + list of strings for each label added to the axes + Examples: + Defaults: + >>> fig, axes = plt.subplots(1,3) + >>> letter_subplots() # boldfaced A, B, C + + Common labeling schemes inferred from the first letter: + >>> fig, axes = plt.subplots(1,4) + # panels labeled (a), (b), (c), (d) + >>> letter_subplots(letters='(a)') + Fully custom lettering: + >>> fig, axes = plt.subplots(2,1) + >>> letter_subplots(axes, letters=['(a.1)', '(b.2)'], fontweight='normal') + Per-axis offsets: + >>> fig, axes = plt.subplots(1,2) + >>> letter_subplots(axes, xoffset=[-0.1, -0.15]) + + Matrix of axes: + >>> fig, axes = plt.subplots(2,2, sharex=True, sharey=True) + # fig.axes is a list when axes is a 2x2 matrix + >>> letter_subplots(fig.axes) + """ + + # get axes: + if axes is None: + axes = plt.gcf().axes + # handle single axes: + try: + iter(axes) + except TypeError: + axes = [axes] + + # set up letter defaults (and corresponding fontweight): + fontweight = "bold" + ulets = list("ABCDEFGHIJKLMNOPQRSTUVWXYZ"[: len(axes)]) + llets = list("abcdefghijklmnopqrstuvwxyz"[: len(axes)]) + if letters is None or letters == "A": + letters = ulets + elif letters == "(a)": + letters = ["({})".format(lett) for lett in llets] + fontweight = "normal" + elif letters == "(A)": + letters = ["({})".format(lett) for lett in ulets] + fontweight = "normal" + elif letters in ("lower", "lowercase", "a"): + letters = llets + + # make sure there are x and y offsets for each ax in axes: + if isinstance(xoffset, (int, float)): + xoffset = [xoffset] * len(axes) + else: + assert len(xoffset) == len(axes) + if isinstance(yoffset, (int, float)): + yoffset = [yoffset] * len(axes) + else: + assert len(yoffset) == len(axes) + + # defaults for annotate (kwargs is second so it can overwrite these defaults): + my_defaults = dict( + fontweight=fontweight, + fontsize="large", + ha="center", + va="center", + xycoords="axes fraction", + annotation_clip=False, + ) + kwargs = dict(list(my_defaults.items()) + list(kwargs.items())) + + list_txts = [] + for ax, lbl, xoff, yoff in zip(axes, letters, xoffset, yoffset): + t = ax.annotate(lbl, xy=(xoff, yoff), **kwargs) + list_txts.append(t) + return list_txts + + pass + + # rcparams text setup + SMALL_SIZE = 12 + MEDIUM_SIZE = 14 + BIGGER_SIZE = 16 + black = "#111116" + white = "#e0e4f7" + gray = "#6c6e7d" + dark_gray = "#2a2a32" + + # rcparams + plt.rc("font", size=MEDIUM_SIZE) # controls default text sizes + plt.rc("axes", titlesize=MEDIUM_SIZE) # fontsize of the axes title + plt.rc("axes", labelsize=MEDIUM_SIZE) # fontsize of the x and y labels + plt.rc("xtick", labelsize=SMALL_SIZE) # fontsize of the tick labels + plt.rc("ytick", labelsize=SMALL_SIZE) # fontsize of the tick labels + plt.rc("legend", fontsize=SMALL_SIZE) # legend fontsize + plt.rc("figure", titlesize=BIGGER_SIZE) # fontsize of the figure title + + plt.rcParams["image.cmap"] = 'cmo.haline' + # plt.rcParams["axes.xmargin"] = 0.1 + # plt.rcParams["axes.ymargin"] = 0.15 + plt.rcParams["axes.titlelocation"] = "center" + plt.rcParams["axes.titlesize"] = BIGGER_SIZE + # plt.rcParams["axes.titlepad"] = -10 + plt.rcParams["legend.frameon"] = False + plt.rcParams["legend.loc"] = "best" + plt.rcParams["legend.borderpad"] = 0.4 + plt.rcParams["legend.facecolor"] = black + plt.rcParams["legend.edgecolor"] = black + plt.rcParams["legend.framealpha"] = 0.7 + plt.rcParams["legend.borderaxespad"] = 0.5 + plt.rcParams["legend.fancybox"] = False + + # specify the custom font to use + plt.rcParams["font.family"] = "sans-serif" + plt.rcParams["font.sans-serif"] = "Helvetica Now Text" + + # dark mode modifications + plt.rcParams["boxplot.flierprops.color"] = white + plt.rcParams["boxplot.flierprops.markeredgecolor"] = gray + plt.rcParams["boxplot.boxprops.color"] = gray + plt.rcParams["boxplot.whiskerprops.color"] = gray + plt.rcParams["boxplot.capprops.color"] = gray + plt.rcParams["boxplot.medianprops.color"] = gray + plt.rcParams["text.color"] = white + plt.rcParams["axes.facecolor"] = black # axes background color + plt.rcParams["axes.edgecolor"] = gray # axes edge color + plt.rcParams["axes.grid"] = True # display grid or not + plt.rcParams["axes.grid.axis"] = "y" # which axis the grid is applied to + plt.rcParams["axes.labelcolor"] = white + plt.rcParams["axes.axisbelow"] = True # draw axis gridlines and ticks: + plt.rcParams["axes.spines.left"] = True # display axis spines + plt.rcParams["axes.spines.bottom"] = True + plt.rcParams["axes.spines.top"] = False + plt.rcParams["axes.spines.right"] = False + plt.rcParams["axes.prop_cycle"] = cycler( + 'color', [ + '#f5c2e7', + '#cba6f7', + '#f38ba8', + '#eba0ac', + '#fab387', + '#f9e2af', + '#a6e3a1', + '#94e2d5', + '#89dceb', + '#74c7ec', + '#89b4fa', + '#b4befe', + ]) + plt.rcParams["xtick.color"] = gray # color of the ticks + plt.rcParams["ytick.color"] = gray # color of the ticks + plt.rcParams["grid.color"] = dark_gray # grid color + plt.rcParams["figure.facecolor"] = black # figure face color + plt.rcParams["figure.edgecolor"] = "#555169" # figure edge color + plt.rcParams["savefig.facecolor"] = black # figure face color when saving + + return style + + +if __name__ == "__main__": + + s = PlotStyle() + + import matplotlib.pyplot as plt + import matplotlib.cm as cm + import matplotlib.pyplot as plt + import matplotlib.cbook as cbook + from matplotlib.path import Path + from matplotlib.patches import PathPatch + + # Fixing random state for reproducibility + np.random.seed(19680801) + + delta = 0.025 + x = y = np.arange(-3.0, 3.0, delta) + X, Y = np.meshgrid(x, y) + Z1 = np.exp(-X**2 - Y**2) + Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2) + Z = (Z1 - Z2) * 2 + + fig1, ax = plt.subplots() + im = ax.imshow(Z, interpolation='bilinear', cmap=cm.RdYlGn, + origin='lower', extent=[-3, 3, -3, 3], + vmax=abs(Z).max(), vmin=-abs(Z).max()) + + plt.show() + + fig, axs = plt.subplots(nrows=1, ncols=2, figsize=(9, 4)) + + # Fixing random state for reproducibility + np.random.seed(19680801) + + # generate some random test data + all_data = [np.random.normal(0, std, 100) for std in range(6, 10)] + + # plot violin plot + axs[0].violinplot(all_data, + showmeans=False, + showmedians=True) + axs[0].set_title('Violin plot') + + # plot box plot + axs[1].boxplot(all_data) + axs[1].set_title('Box plot') + + # adding horizontal grid lines + for ax in axs: + ax.yaxis.grid(True) + ax.set_xticks([y + 1 for y in range(len(all_data))], + labels=['x1', 'x2', 'x3', 'x4']) + ax.set_xlabel('Four separate samples') + ax.set_ylabel('Observed values') + + plt.show() + + # Fixing random state for reproducibility + np.random.seed(19680801) + + # Compute pie slices + N = 20 + theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False) + radii = 10 * np.random.rand(N) + width = np.pi / 4 * np.random.rand(N) + colors = cmo.cm.haline(radii / 10.) + + ax = plt.subplot(projection='polar') + ax.bar(theta, radii, width=width, bottom=0.0, color=colors, alpha=0.5) + + plt.show() + + methods = [None, 'none', 'nearest', 'bilinear', 'bicubic', 'spline16', + 'spline36', 'hanning', 'hamming', 'hermite', 'kaiser', 'quadric', + 'catrom', 'gaussian', 'bessel', 'mitchell', 'sinc', 'lanczos'] + + # Fixing random state for reproducibility + np.random.seed(19680801) + + grid = np.random.rand(4, 4) + + fig, axs = plt.subplots(nrows=3, ncols=6, figsize=(9, 6), + subplot_kw={'xticks': [], 'yticks': []}) + + for ax, interp_method in zip(axs.flat, methods): + ax.imshow(grid, interpolation=interp_method) + ax.set_title(str(interp_method)) + + plt.tight_layout() + plt.show() diff --git a/poster/main.pdf b/poster/main.pdf new file mode 100644 index 0000000000000000000000000000000000000000..06827b3b9c94834f215fc6f515ae6716e6ec5142 GIT binary patch literal 44224 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