From 7222852a2735a2c2a476d3d2fa1e0d47e1932b94 Mon Sep 17 00:00:00 2001 From: Andreas Tsouchlos Date: Wed, 22 Apr 2026 17:41:23 +0200 Subject: [PATCH] Fix libraries --- .gitmodules | 5 +- lib/latex-common | 1 - lib/latex-common/.gitignore | 1 + lib/latex-common/.latexmkrc | 3 + lib/latex-common/Makefile | 11 + lib/latex-common/README.md | 33 ++ lib/latex-common/common.tex | 317 +++++++++++ .../dockerfiles/Dockerfile.alpine | 4 + .../dockerfiles/Dockerfile.archlinux | 8 + .../dockerfiles/Dockerfile.ubuntu | 6 + lib/latex-common/examples/colorschemes.tex | 103 ++++ .../examples/csv_manipulation.tex | 177 ++++++ lib/latex-common/res/random.csv | 129 +++++ lib/latex-common/res/random_multiple.csv | 513 ++++++++++++++++++ 14 files changed, 1306 insertions(+), 5 deletions(-) delete mode 160000 lib/latex-common create mode 100644 lib/latex-common/.gitignore create mode 100644 lib/latex-common/.latexmkrc create mode 100644 lib/latex-common/Makefile create mode 100644 lib/latex-common/README.md create mode 100644 lib/latex-common/common.tex create mode 100644 lib/latex-common/dockerfiles/Dockerfile.alpine create mode 100644 lib/latex-common/dockerfiles/Dockerfile.archlinux create mode 100644 lib/latex-common/dockerfiles/Dockerfile.ubuntu create mode 100644 lib/latex-common/examples/colorschemes.tex create mode 100644 lib/latex-common/examples/csv_manipulation.tex create mode 100644 lib/latex-common/res/random.csv create mode 100644 lib/latex-common/res/random_multiple.csv diff --git a/.gitmodules b/.gitmodules index b41bc29..f83f35e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,3 @@ -[submodule "lib/latex-common"] - path = lib/latex-common - url = ssh://git@git.mercurial-manifold.eu:2224/an.tsouchlos/latex-common.git [submodule "lib/cel-slides-template-2025"] path = lib/cel-slides-template-2025 - url = ssh://git@git.mercurial-manifold.eu:2224/an.tsouchlos/cel-slides-template-2025.git + url = git@gitlab.kit.edu:kit/cel/misc/cel-slides-template-2025.git diff --git a/lib/latex-common b/lib/latex-common deleted file mode 160000 index bded242..0000000 --- a/lib/latex-common +++ /dev/null @@ -1 +0,0 @@ -Subproject commit bded242752b51c685fd6ed21a3506733476d5842 diff --git a/lib/latex-common/.gitignore b/lib/latex-common/.gitignore new file mode 100644 index 0000000..567609b --- /dev/null +++ b/lib/latex-common/.gitignore @@ -0,0 +1 @@ +build/ diff --git a/lib/latex-common/.latexmkrc b/lib/latex-common/.latexmkrc new file mode 100644 index 0000000..e87380c --- /dev/null +++ b/lib/latex-common/.latexmkrc @@ -0,0 +1,3 @@ +$pdflatex="pdflatex -shell-escape -interaction=nonstopmode -synctex=1 %O %S"; +$out_dir = 'build'; +$pdf_mode = 1; diff --git a/lib/latex-common/Makefile b/lib/latex-common/Makefile new file mode 100644 index 0000000..a7c2efa --- /dev/null +++ b/lib/latex-common/Makefile @@ -0,0 +1,11 @@ +SRCS=$(shell find examples -type f -name "*.tex") +PDFS=$(shell echo $(SRCS:.tex=.pdf) | sed -e "s/examples\\///g") + +all: $(PDFS) + +%.pdf: examples/%.tex + latexmk $< + +clean: + rm -rf build + diff --git a/lib/latex-common/README.md b/lib/latex-common/README.md new file mode 100644 index 0000000..64fc239 --- /dev/null +++ b/lib/latex-common/README.md @@ -0,0 +1,33 @@ +# latex-common + +Repository containing common latex code that can be shared across multiple projects. + +## Usage + +Put + +```latex +\input{/path/to/common.tex} +``` + +in your preamble. See the `examples` folder for usage examples. + +## Build examples + +### Build manually + +```bash +$ make +``` + +### Build using docker + +1. Build docker image + ```bash + $ docker build -f dockerfiles/Dockerfile.alpine . -t latex-common + ``` +2. Build examples + ```bash + $ docker run --rm -v $PWD:$PWD -w $PWD -u `id -u`:`id -g` latex-common make + ``` + diff --git a/lib/latex-common/common.tex b/lib/latex-common/common.tex new file mode 100644 index 0000000..92d169f --- /dev/null +++ b/lib/latex-common/common.tex @@ -0,0 +1,317 @@ +% Author: Andreas Tsouchlos +% +% Collection of useful commands and definitions +% +% ||====================================================================|| +% || WARNING || +% ||====================================================================|| +% || The following packages have to be included before using this file: || +% || amsmath || +% || pgfplots || +% ||====================================================================|| + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Math Symbols %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\DeclareMathOperator*{\argmin}{\arg\!\min} +\DeclareMathOperator*{\argmax}{\arg\!\max} +\DeclareMathOperator\sign{sign} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Data Manipulation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +% +% Filters for Pgfplots +% Source: https://tex.stackexchange.com/a/58563 (modified) +% + +\pgfplotsset{ + discard if/.style 2 args={ + x filter/.append code={ + \edef\tempa{\thisrow{#1}} + \edef\tempb{#2} + \ifx\tempa\tempb + \def\pgfmathresult{inf} + \fi + } + }, + discard if not/.style 2 args={ + x filter/.append code={ + \edef\tempa{\thisrow{#1}} + \edef\tempb{#2} + \ifx\tempa\tempb + \else + \def\pgfmathresult{inf} + \fi + } + }, + discard if gt/.style 2 args={ + x filter/.append code={ + \edef\tempa{\thisrow{#1}} + \edef\tempb{#2} + \ifdim\tempa pt > \tempb pt + \def\pgfmathresult{inf} + \fi + } + }, + discard if lt/.style 2 args={ + x filter/.append code={ + \edef\tempa{\thisrow{#1}} + \edef\tempb{#2} + \ifdim\tempa pt < \tempb pt + \def\pgfmathresult{inf} + \fi + } + } +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Graphics & Plotting %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% +% Colors +% + +% KIT Colors + +\definecolor{kit-green100}{rgb}{0,.59,.51} +\definecolor{kit-green70}{rgb}{.3,.71,.65} +\definecolor{kit-green50}{rgb}{.50,.79,.75} +\definecolor{kit-green30}{rgb}{.69,.87,.85} +\definecolor{kit-green15}{rgb}{.85,.93,.93} +\definecolor{KITgreen}{rgb}{0,.59,.51} + +\definecolor{KITpalegreen}{RGB}{130,190,60} +\colorlet{kit-maigreen100}{KITpalegreen} +\colorlet{kit-maigreen70}{KITpalegreen!70} +\colorlet{kit-maigreen50}{KITpalegreen!50} +\colorlet{kit-maigreen30}{KITpalegreen!30} +\colorlet{kit-maigreen15}{KITpalegreen!15} + +\definecolor{KITblue}{rgb}{.27,.39,.66} +\definecolor{kit-blue100}{rgb}{.27,.39,.67} +\definecolor{kit-blue70}{rgb}{.49,.57,.76} +\definecolor{kit-blue50}{rgb}{.64,.69,.83} +\definecolor{kit-blue30}{rgb}{.78,.82,.9} +\definecolor{kit-blue15}{rgb}{.89,.91,.95} + +\definecolor{KITyellow}{rgb}{.98,.89,0} +\definecolor{kit-yellow100}{cmyk}{0,.05,1,0} +\definecolor{kit-yellow70}{cmyk}{0,.035,.7,0} +\definecolor{kit-yellow50}{cmyk}{0,.025,.5,0} +\definecolor{kit-yellow30}{cmyk}{0,.015,.3,0} +\definecolor{kit-yellow15}{cmyk}{0,.0075,.15,0} + +\definecolor{KITorange}{rgb}{.87,.60,.10} +\definecolor{kit-orange100}{cmyk}{0,.45,1,0} +\definecolor{kit-orange70}{cmyk}{0,.315,.7,0} +\definecolor{kit-orange50}{cmyk}{0,.225,.5,0} +\definecolor{kit-orange30}{cmyk}{0,.135,.3,0} +\definecolor{kit-orange15}{cmyk}{0,.0675,.15,0} + +\definecolor{KITred}{rgb}{.63,.13,.13} +\definecolor{kit-red100}{cmyk}{.25,1,1,0} +\definecolor{kit-red70}{cmyk}{.175,.7,.7,0} +\definecolor{kit-red50}{cmyk}{.125,.5,.5,0} +\definecolor{kit-red30}{cmyk}{.075,.3,.3,0} +\definecolor{kit-red15}{cmyk}{.0375,.15,.15,0} + +\definecolor{KITpurple}{RGB}{160,0,120} +\colorlet{kit-purple100}{KITpurple} +\colorlet{kit-purple70}{KITpurple!70} +\colorlet{kit-purple50}{KITpurple!50} +\colorlet{kit-purple30}{KITpurple!30} +\colorlet{kit-purple15}{KITpurple!15} + +\definecolor{KITcyanblue}{RGB}{80,170,230} +\colorlet{kit-cyanblue100}{KITcyanblue} +\colorlet{kit-cyanblue70}{KITcyanblue!70} +\colorlet{kit-cyanblue50}{KITcyanblue!50} +\colorlet{kit-cyanblue30}{KITcyanblue!30} +\colorlet{kit-cyanblue15}{KITcyanblue!15} + +% Matplotlib Colors + +\definecolor{Mpl1}{HTML}{1f77b4} +\definecolor{Mpl2}{HTML}{ff7f0e} +\definecolor{Mpl3}{HTML}{2ca02c} +\definecolor{Mpl4}{HTML}{d62728} +\definecolor{Mpl5}{HTML}{9467bd} +\definecolor{Mpl6}{HTML}{8c564b} +\definecolor{Mpl7}{HTML}{e377c2} +\definecolor{Mpl8}{HTML}{7f7f7f} +\definecolor{Mpl9}{HTML}{bcbd22} +\definecolor{Mpl10}{HTML}{17becf} + +% +% Color Schemes +% + +% Define colormaps + +\pgfplotsset{ + colormap={mako}{ + rgb=(0.18195582, 0.11955283, 0.23136943) + rgb=(0.25307401, 0.23772973, 0.48316271) + rgb=(0.21607792, 0.39736958, 0.61948028) + rgb=(0.20344718, 0.56074869, 0.65649508) + rgb=(0.25187832, 0.71827158, 0.67872193) + rgb=(0.54578602, 0.8544913, 0.69848331) + }, + colormap={rocket}{ + rgb=(0.20973515, 0.09747934, 0.24238489) + rgb=(0.43860848, 0.12177004, 0.34119475) + rgb=(0.67824099, 0.09192342, 0.3504148) + rgb=(0.8833417, 0.19830556, 0.26014181) + rgb=(0.95381595, 0.46373781, 0.31769923) + rgb=(0.96516917, 0.70776351, 0.5606593) + }, + colormap={cividis}{ + rgb=(0.130669, 0.231458, 0.43284) + rgb=(0.298421, 0.332247, 0.423973) + rgb=(0.42512, 0.431334, 0.447692) + rgb=(0.555393, 0.537807, 0.471147) + rgb=(0.695985, 0.648334, 0.440072) + rgb=(0.849223, 0.771947, 0.359729) + }, + colormap={cel}{ + color=(KITred!90!black); + color=(kit-blue100); + color=(kit-green70); + color=(kit-yellow70!80!kit-orange70); + }, + colormap={matplotlib}{ + % Source: https://github.com/matplotlib/matplotlib/blob/e5a85f960b2d47eac371cff709b830d52c36d267/lib/matplotlib/_cm.py#L1114 + rgb=(0.2298057, 0.298717966, 0.753683153) + rgb=(0.26623388, 0.353094838, 0.801466763) + rgb=(0.30386891, 0.406535296, 0.84495867 ) + rgb=(0.342804478, 0.458757618, 0.883725899) + rgb=(0.38301334, 0.50941904, 0.917387822) + rgb=(0.424369608, 0.558148092, 0.945619588) + rgb=(0.46666708, 0.604562568, 0.968154911) + rgb=(0.509635204, 0.648280772, 0.98478814 ) + rgb=(0.552953156, 0.688929332, 0.995375608) + rgb=(0.596262162, 0.726149107, 0.999836203) + rgb=(0.639176211, 0.759599947, 0.998151185) + rgb=(0.681291281, 0.788964712, 0.990363227) + rgb=(0.722193294, 0.813952739, 0.976574709) + rgb=(0.761464949, 0.834302879, 0.956945269) + rgb=(0.798691636, 0.849786142, 0.931688648) + rgb=(0.833466556, 0.860207984, 0.901068838) + rgb=(0.865395197, 0.86541021, 0.865395561) + rgb=(0.897787179, 0.848937047, 0.820880546) + rgb=(0.924127593, 0.827384882, 0.774508472) + rgb=(0.944468518, 0.800927443, 0.726736146) + rgb=(0.958852946, 0.769767752, 0.678007945) + rgb=(0.96732803, 0.734132809, 0.628751763) + rgb=(0.969954137, 0.694266682, 0.579375448) + rgb=(0.966811177, 0.650421156, 0.530263762) + rgb=(0.958003065, 0.602842431, 0.481775914) + rgb=(0.943660866, 0.551750968, 0.434243684) + rgb=(0.923944917, 0.49730856, 0.387970225) + rgb=(0.89904617, 0.439559467, 0.343229596) + rgb=(0.869186849, 0.378313092, 0.300267182) + rgb=(0.834620542, 0.312874446, 0.259301199) + rgb=(0.795631745, 0.24128379, 0.220525627) + rgb=(0.752534934, 0.157246067, 0.184115123) + rgb=(0.705673158, 0.01555616, 0.150232812) + } +} + +% Define cycle lists + +\pgfplotscreateplotcyclelist{mako}{% + [samples of colormap={4} of mako]% +} +\pgfplotscreateplotcyclelist{rocket}{% + [samples of colormap={4} of rocket]% +} +\pgfplotscreateplotcyclelist{cividis}{% + [samples of colormap={4} of cividis]% +} +\pgfplotscreateplotcyclelist{viridis}{% + [samples of colormap={4} of viridis]% +} +\pgfplotscreateplotcyclelist{cel}{% + [samples of colormap={4} of cel]% +} +\pgfplotscreateplotcyclelist{matplotlib}{% + {Mpl1},{Mpl2},{Mpl3},{Mpl4} +} + +% Define 'scolX' colors + +\makeatletter + +\def\extractcolormapcolor#1#2{% + \expandafter\pgfplotscolormapaccess\expandafter[\pgfplotspointmetatransformedrange]% + [1.0]% + {#2}% + {\pgfkeysvalueof{/pgfplots/colormap name}}% + \def\pgfplots@loc@TMPb{\pgfutil@definecolor{#1}{\csname pgfpl@cm@\pgfkeysvalueof{/pgfplots/colormap name}@colspace\endcsname}}% + \expandafter\pgfplots@loc@TMPb\expandafter{\pgfmathresult}% +}% + +\def\getcolorbyvalue#1{ + \csname pgfpl@cm@\pgfkeysvalueof{/pgfplots/colormap name}@colspace\endcsname +} + +\makeatother + +\def\setschemecolorsfrommap{ + \extractcolormapcolor{scol0}{0} + \extractcolormapcolor{scol1}{333} + \extractcolormapcolor{scol2}{666} + \extractcolormapcolor{scol3}{1000} +} + +\newcommand{\setschemecolorsmanually}[4]{ + \colorlet{scol0}{#1} + \colorlet{scol1}{#2} + \colorlet{scol2}{#3} + \colorlet{scol3}{#4} +} + +% Define color schemes + +\pgfplotsset{ + /pgfplots/colorscheme/cel/.style={ + colormap name={cel}, + cycle list name={cel}, + /utils/exec={\setschemecolorsfrommap}, + }, + /pgfplots/colorscheme/rocket/.style={ + colormap name={rocket}, + cycle list name={rocket}, + /utils/exec={\setschemecolorsfrommap}, + }, + /pgfplots/colorscheme/viridis/.style={ + colormap name={viridis}, + cycle list name={viridis}, + /utils/exec={\setschemecolorsfrommap}, + }, + /pgfplots/colorscheme/mako/.style={ + colormap name={mako}, + cycle list name={mako}, + /utils/exec={\setschemecolorsfrommap}, + }, + /pgfplots/colorscheme/cividis/.style={ + colormap name={cividis}, + cycle list name={cividis}, + /utils/exec={\setschemecolorsfrommap}, + }, + /pgfplots/colorscheme/matplotlib/.style={ + colormap name={matplotlib}, + cycle list name={matplotlib}, + /utils/exec={\setschemecolorsmanually{Mpl1}{Mpl2}{Mpl3}{Mpl4}}, + }, +} + diff --git a/lib/latex-common/dockerfiles/Dockerfile.alpine b/lib/latex-common/dockerfiles/Dockerfile.alpine new file mode 100644 index 0000000..7fc51d8 --- /dev/null +++ b/lib/latex-common/dockerfiles/Dockerfile.alpine @@ -0,0 +1,4 @@ +FROM alpine:3.19 + +RUN apk update && apk upgrade +RUN apk add make texlive texmf-dist-pictures diff --git a/lib/latex-common/dockerfiles/Dockerfile.archlinux b/lib/latex-common/dockerfiles/Dockerfile.archlinux new file mode 100644 index 0000000..08369fd --- /dev/null +++ b/lib/latex-common/dockerfiles/Dockerfile.archlinux @@ -0,0 +1,8 @@ +FROM archlinux:latest + +RUN pacman-key --init +RUN pacman-key --populate archlinux +RUN pacman -Sy archlinux-keyring --noconfirm && pacman -Su --noconfirm + +RUN pacman -Syu --noconfirm +RUN pacman -S make perl texlive texlive-binextra texlive-pictures --noconfirm diff --git a/lib/latex-common/dockerfiles/Dockerfile.ubuntu b/lib/latex-common/dockerfiles/Dockerfile.ubuntu new file mode 100644 index 0000000..8def11a --- /dev/null +++ b/lib/latex-common/dockerfiles/Dockerfile.ubuntu @@ -0,0 +1,6 @@ +FROM ubuntu:22.04 + +ARG DEBIAN_FRONTEND=noninteractive + +RUN apt update -y && apt upgrade -y +RUN apt install make texlive latexmk texlive-pictures -y diff --git a/lib/latex-common/examples/colorschemes.tex b/lib/latex-common/examples/colorschemes.tex new file mode 100644 index 0000000..1f4310a --- /dev/null +++ b/lib/latex-common/examples/colorschemes.tex @@ -0,0 +1,103 @@ +\documentclass{article} + +% Packages necessary for common.tex +\usepackage{amsmath} +\usepackage{pgfplots} +\pgfplotsset{compat=newest} + +% Other packages +\usepackage{float} +\usepackage{subcaption} +\usepackage[a4paper, total={5in, 9in}]{geometry} +\usetikzlibrary{positioning} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%% Set common options %%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\input{common.tex} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%% Actual Document %%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\title{Colorschemes} +\author{} +\date{} + + +\begin{document} + +\maketitle + +\foreach \x in {cel, rocket, viridis, mako, cividis, matplotlib}{ + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Set colorscheme + + \pgfplotsset{colorscheme/\x} + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Preview colorscheme + + \noindent\begin{minipage}{\textwidth} + \colorbox{gray!30}{\texttt{colorscheme/\x}} + \begin{figure}[H] + \centering + + \tikzstyle{colornode} = [draw, inner sep=0pt, minimum width=1cm, minimum height=0.5cm] + \pgfplotsset{scaled y ticks=false} + + \begin{subfigure}[c]{0.45\textwidth} + \begin{tikzpicture} + \begin{axis}[ + domain=0:10, + view={0}{90}, + yticklabel=\empty,xticklabel=\empty, + width=\textwidth, + height=0.75\textwidth, + ] + \addplot3+[surf] + {x + y}; + \end{axis} + \end{tikzpicture} + \end{subfigure}% + \begin{subfigure}[c]{0.45\textwidth} + \begin{tikzpicture} + \begin{axis}[ + domain=0:10, + ymin=-1e4,ymax=1, + legend pos=south west, + yticklabel=\empty,xticklabel=\empty, + width=\textwidth, + height=0.75\textwidth, + ] + \foreach \i in {1,2,4,8}{ + \addplot+ [mark=none, line width=1pt] + {-\i*exp(x)}; + %\expandafter\addlegendentry\expandafter{$e^{-\text{\i} x}$} + \addlegendentryexpanded{$e^{-\i x}$} + } + \end{axis} + \end{tikzpicture} + \end{subfigure}% + \begin{subfigure}[c]{0.1\textwidth} + \begin{tikzpicture} + \node[colornode, fill=scol3] (color3) {}; + \node[colornode, fill=scol2, above=1mm of color3] (color2) {}; + \node[colornode, fill=scol1, above=1mm of color2] (color1) {}; + \node[colornode, fill=scol0, above=1mm of color1] (color0) {}; + \end{tikzpicture} + \end{subfigure}% + \end{figure} + \vspace{\parskip} + \end{minipage} +} + + +\end{document} + diff --git a/lib/latex-common/examples/csv_manipulation.tex b/lib/latex-common/examples/csv_manipulation.tex new file mode 100644 index 0000000..dd47639 --- /dev/null +++ b/lib/latex-common/examples/csv_manipulation.tex @@ -0,0 +1,177 @@ +\documentclass{article} + +% Packages necessary for common.tex +\usepackage{amsmath} +\usepackage{pgfplots} +\pgfplotsset{compat=newest} + +% Other packages +\usepackage{float} +\usepackage{subcaption} +\usepackage[a4paper, total={6.5in, 9in}]{geometry} +\usetikzlibrary{positioning} +\usepackage{ifthen} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%% Set common options %%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\input{common.tex} +\pgfplotsset{colorscheme/rocket} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%% Actual Document %%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\title{Manipulation of CSV data} +\author{} +\date{} + + +\begin{document} + +\maketitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 'discard if lt' & 'discard if gt' + +\begin{figure}[H] + \centering + + \begin{subfigure}[t]{0.49\textwidth} + + %%%%%%%%%%%%%%%%% + % Crop along x axis + + \begin{tikzpicture} + \begin{axis}[ + width=\textwidth, + height=0.55\textwidth, + xmin=-5, xmax=132, + ymin=-3, ymax=6, + ] + % Plot all data as reference + \addplot+[mark=none, line width=1pt] + table[col sep=comma, x=x, y=y] + {res/random.csv}; + \addlegendentry{All data} + + % Crop and plot desired data + \addplot+[scol2, mark=none, line width=1pt] + table[col sep=comma, x=x, y=y, discard if lt={x}{40}, + discard if gt={x}{80}] + {res/random.csv}; + \addlegendentry{Cropped data} + \end{axis} + \end{tikzpicture} + + \caption{\texttt{discard if lt/gt} used to crop along $x$-axis} + \end{subfigure}% + \hfill% + \begin{subfigure}[t]{0.49\textwidth} + + %%%%%%%%%%%%%%%%% + % Crop along y axis + + \begin{tikzpicture} + \begin{axis}[ + width=\textwidth, + height=0.55\textwidth, + xmin=-5, xmax=132, + ymin=-3, ymax=6, + ] + % Plot all data as reference + \addplot+[mark=*] + table[col sep=comma, x=x, y=y] + {res/random.csv}; + \addlegendentry{All data} + + % Crop and plot desired data + \addplot+[scol2, only marks] + table[col sep=comma, x=x, y=y, discard if gt={y}{1}, + discard if lt={y}{-1}] + {res/random.csv}; + \addlegendentry{Cropped data} + \end{axis} + \end{tikzpicture} + + \caption{\texttt{discard if lt/gt} used to crop along $y$-axis} + \end{subfigure} + + \caption{\texttt{discard if lt} and \texttt{discard if gt}} +\end{figure} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 'discard if' & 'discard if not' + +\begin{figure}[H] + \centering + + \begin{subfigure}[t]{0.49\textwidth} + + %%%%%%%%%%%%%%%%% + % Select single datastream + + \begin{tikzpicture} + \begin{axis}[ + width=\textwidth, + height=0.5\textwidth, + ymin=-4,ymax=14, + ] + % Plot all data as reference + \foreach \i in {0.0, 3.0, 6.0, 9.0} { + \addplot[scol0!20, mark=none, line width=1pt, forget plot] + table[col sep=comma, x=x, y=y, discard if not={mu}{\i}] + {res/random_multiple.csv}; + } + \addlegendimage{scol0!20, mark=none, line width=1pt, forget plot} + \addlegendentry{All data} + + % Select and plot desired datastream + \addplot+[scol2, mark=none, line width=1pt] + table[col sep=comma, x=x, y=y, discard if not={mu}{3.0}] + {res/random_multiple.csv}; + \addlegendentry{$\mu=3.0$} + \end{axis} + \end{tikzpicture} + + \caption{\texttt{discard if not} used to select single datastream} + \end{subfigure}% + \begin{subfigure}[t]{0.49\textwidth} + + %%%%%%%%%%%%%%%%% + % Discard single datastream + + \begin{tikzpicture} + \begin{axis}[ + width=\textwidth, + height=0.5\textwidth, + ymin=-4,ymax=14, + ] + % Plot all data as reference + \addplot+[scol0!20, only marks, point meta=\thisrow{mu}] + table[col sep=comma, x=x, y=y] + {res/random_multiple.csv}; + \addlegendentry{All data} + + % Discard datastream and plot desired data + \addplot+[scol1, only marks, point meta=\thisrow{mu}] + table[col sep=comma, x=x, y=y, discard if={mu}{6.0}] + {res/random_multiple.csv}; + \addlegendentry{All except discarded} + \end{axis} + \end{tikzpicture} + + \caption{\texttt{discard if} used to discard single datastream} + \end{subfigure} + + \caption{\texttt{discard if} and \texttt{discard if not}} +\end{figure} + + +\end{document} + diff --git a/lib/latex-common/res/random.csv b/lib/latex-common/res/random.csv new file mode 100644 index 0000000..fe668f8 --- /dev/null +++ b/lib/latex-common/res/random.csv @@ -0,0 +1,129 @@ +x,y +0,-1.13732725438736 +1,1.5919832354572523 +2,-1.6064930088409208 +3,1.030013689889431 +4,-0.44125640098278945 +5,0.503998644095984 +6,1.1860547280920992 +7,-0.8386730808575481 +8,-0.4789794372826604 +9,-0.6016626649298871 +10,1.2643152723738609 +11,-0.4343753770329363 +12,-1.9019853073588915 +13,-0.45066095422767666 +14,0.9071910294469501 +15,-0.2634371055799787 +16,0.7331464662492323 +17,-1.6664798018371787 +18,0.5954780561064251 +19,0.8621308391039594 +20,-0.18373292284888781 +21,0.2539752150426439 +22,0.16800765897424735 +23,-0.02120398387239827 +24,1.1843715572867999 +25,0.3965849961876547 +26,-0.9031099727056421 +27,-0.3808169140759629 +28,2.7922869845480767 +29,-0.8279379215611151 +30,-0.03668561709859059 +31,0.8320869084639638 +32,0.2979597941326193 +33,0.2855524980134765 +34,1.2493559922085804 +35,-0.12612786025148115 +36,0.37880308361606013 +37,-0.28390566170113984 +38,-0.1683768141074095 +39,-0.949229057564634 +40,-1.2313866182044362 +41,-0.5842353803409914 +42,-1.0187492911153144 +43,-0.6387195695647908 +44,0.968215333512659 +45,-0.9541767248920768 +46,-0.7238175545654183 +47,-0.4716066968543211 +48,-2.296427327661435 +49,0.0419001979706312 +50,1.8764180861767628 +51,-0.8896758930065772 +52,1.0234520822417332 +53,-1.9896367539108486 +54,0.18590043400102876 +55,-0.2619291989741318 +56,0.20954716344137278 +57,-0.20061271234127404 +58,-0.30706188888628266 +59,-1.3110092904920883 +60,0.45941444304307744 +61,-1.3373495767229746 +62,2.6965844211065564 +63,-1.217532237907974 +64,0.2397117225155465 +65,1.5319481173957488 +66,-1.3583653180349033 +67,0.25379202729365186 +68,0.1972123876513032 +69,-0.13476234473532442 +70,2.132867802416318 +71,-0.5720388910327979 +72,-0.016618718555398305 +73,-1.1686566488438228 +74,0.3053985263407672 +75,-0.42370482429331907 +76,0.6382830988812391 +77,-0.020809226570539286 +78,-0.6944967436396547 +79,-1.240150256074881 +80,0.5740410970365567 +81,0.954899758617465 +82,1.8996635049609978 +83,1.884428533689216 +84,-0.6897747502138287 +85,-0.6546335128545098 +86,-0.8460364463751073 +87,-0.571911615177671 +88,0.4076021118877513 +89,-0.2943984445839808 +90,-0.4279163769716974 +91,0.35686172548654777 +92,0.2273696210373922 +93,-0.9202981068315161 +94,0.20827011536456355 +95,-1.723858660855622 +96,-1.0076532232462354 +97,-0.3170942137593396 +98,0.24303109515135415 +99,0.07689243609461709 +100,-0.13803148823497646 +101,2.210435854264219 +102,-1.498617561949655 +103,-1.2090818675140287 +104,-1.509943651024493 +105,0.64047034901717 +106,-0.7247626470451775 +107,0.1217685866911771 +108,0.8337630934932774 +109,-0.008864632246469219 +110,0.19860008820754113 +111,2.328885947387146 +112,1.794196471497067 +113,1.325315144378164 +114,0.04421384691058939 +115,0.143634609083007 +116,-1.0222931353884488 +117,-0.4030820398830066 +118,-1.3720900836490675 +119,-0.4934545232900141 +120,0.1367119132685584 +121,-0.22404492957397007 +122,-0.40230508021903777 +123,-0.6578941269194497 +124,0.6123155163562329 +125,1.05382264266869 +126,-0.5449030704433011 +127,-0.8297851538758689 diff --git a/lib/latex-common/res/random_multiple.csv b/lib/latex-common/res/random_multiple.csv new file mode 100644 index 0000000..a1556b4 --- /dev/null +++ b/lib/latex-common/res/random_multiple.csv @@ -0,0 +1,513 @@ +x,y,mu +0,0.734523348833303,0.0 +1,-1.224037648532118,0.0 +2,0.12740396798342196,0.0 +3,1.3716357319134496,0.0 +4,0.06555889099056576,0.0 +5,0.07841595310291531,0.0 +6,0.2340276512090509,0.0 +7,-0.5533656945896459,0.0 +8,0.3463620740227469,0.0 +9,0.8243820104949475,0.0 +10,0.4813231835825553,0.0 +11,-0.9510805895531538,0.0 +12,1.9308434710001918,0.0 +13,-0.5313069213983053,0.0 +14,0.5716142807663168,0.0 +15,0.4467138451323015,0.0 +16,0.4274697644747647,0.0 +17,0.22687513146376515,0.0 +18,0.5529070363165761,0.0 +19,-2.493347605034286,0.0 +20,-1.507305081166146,0.0 +21,0.3681787570900008,0.0 +22,2.318467028067955,0.0 +23,-0.5181114582195019,0.0 +24,-0.0046618397258439215,0.0 +25,0.6809552899867202,0.0 +26,-1.7753293230946878,0.0 +27,-0.06823912384807258,0.0 +28,0.10146964430123218,0.0 +29,-0.2726776940574052,0.0 +30,-0.7281312274627353,0.0 +31,-0.2198129141757685,0.0 +32,1.5753731016450225,0.0 +33,-1.5074896325495264,0.0 +34,-1.7061958861604478,0.0 +35,-0.8315683707853929,0.0 +36,-1.3341117823872093,0.0 +37,1.0670250560997407,0.0 +38,0.4987078381283533,0.0 +39,1.7925891054110892,0.0 +40,1.6099431571524887,0.0 +41,-1.1356165408408632,0.0 +42,-0.7032912380808569,0.0 +43,-1.0746731543786698,0.0 +44,-0.05822505634021117,0.0 +45,-0.6698922732480829,0.0 +46,0.22932770840272126,0.0 +47,-0.34785989564935554,0.0 +48,0.45384335387125246,0.0 +49,0.9280156907833359,0.0 +50,-1.5612843206886924,0.0 +51,0.5506693725166064,0.0 +52,1.0724964883393509,0.0 +53,0.08146587697739088,0.0 +54,-0.8289530623313647,0.0 +55,0.1445007074741892,0.0 +56,1.3510103029391451,0.0 +57,-0.9452829854782673,0.0 +58,-0.256794337424904,0.0 +59,0.9188851121535593,0.0 +60,-0.04133362963713569,0.0 +61,-0.8419259406252493,0.0 +62,-0.9855035561328721,0.0 +63,0.0402504659551575,0.0 +64,0.5814870849974859,0.0 +65,0.11477323575936485,0.0 +66,-0.19700364190349792,0.0 +67,-1.0487895972165777,0.0 +68,0.9586233269949481,0.0 +69,0.2925890423071986,0.0 +70,-0.5278695517670636,0.0 +71,0.5103270633166069,0.0 +72,-0.9220426385778423,0.0 +73,-1.288047452319449,0.0 +74,-0.49695716115296035,0.0 +75,-0.6778967583469189,0.0 +76,1.1451240892629166,0.0 +77,0.28168634647577206,0.0 +78,0.43418669259129167,0.0 +79,-1.6986044166764291,0.0 +80,-0.1294624064363705,0.0 +81,1.714149012563706,0.0 +82,-0.614868635296141,0.0 +83,0.17534749600068403,0.0 +84,-0.6666863424294728,0.0 +85,0.6053250630414264,0.0 +86,0.814041816343046,0.0 +87,0.642329477294142,0.0 +88,-0.6779000894543422,0.0 +89,-0.5140025652958204,0.0 +90,-0.019823204524792158,0.0 +91,-0.4188050959109324,0.0 +92,0.5872305960818768,0.0 +93,0.08940893221551088,0.0 +94,0.6049801323128513,0.0 +95,0.8127504330297943,0.0 +96,1.372175588707743,0.0 +97,-2.6054711992128894,0.0 +98,0.3566240732443252,0.0 +99,1.101515875443954,0.0 +100,1.2277540633789843,0.0 +101,-0.10549967793276277,0.0 +102,0.2732761660900581,0.0 +103,1.6612296677441607,0.0 +104,0.6583195606681883,0.0 +105,-1.1114481416538484,0.0 +106,1.2706302457340444,0.0 +107,-0.8165254574730065,0.0 +108,-2.1313563226408325,0.0 +109,-1.6011929356418861,0.0 +110,-0.6359037601844311,0.0 +111,0.5819876709429042,0.0 +112,0.3312154151353651,0.0 +113,-0.39409260557571363,0.0 +114,0.30228470322648165,0.0 +115,-1.2300856532449425,0.0 +116,0.2352458196795061,0.0 +117,-0.6830920450442247,0.0 +118,-0.21312779200324894,0.0 +119,0.16124085099353144,0.0 +120,2.3911807700493113,0.0 +121,-0.16611613438538672,0.0 +122,0.7022920449173549,0.0 +123,-0.4785019494573002,0.0 +124,-1.5330944738827974,0.0 +125,-0.5098590307081559,0.0 +126,0.9181500668070861,0.0 +127,-0.8846718571575196,0.0 +0,2.169426931470944,3.0 +1,3.525102505408203,3.0 +2,5.113358975247618,3.0 +3,1.5307999562319516,3.0 +4,2.580202626434093,3.0 +5,4.00096006111214,3.0 +6,1.4772970924425615,3.0 +7,2.128724281450749,3.0 +8,2.3869537947568764,3.0 +9,3.7662628014724535,3.0 +10,2.830243134371583,3.0 +11,4.221781129016566,3.0 +12,2.3226786845187153,3.0 +13,2.829341372874075,3.0 +14,3.030478672814942,3.0 +15,3.6008337624729627,3.0 +16,5.040749469189079,3.0 +17,2.086253721539345,3.0 +18,3.690999184720149,3.0 +19,3.464968858836472,3.0 +20,4.027577821521752,3.0 +21,2.4244343715518775,3.0 +22,2.4853262515819017,3.0 +23,4.057650652567277,3.0 +24,4.098170442131243,3.0 +25,1.9058660241078604,3.0 +26,2.5479439713895293,3.0 +27,3.6089433704560903,3.0 +28,3.810781383894511,3.0 +29,3.1850263756180626,3.0 +30,3.931813111050788,3.0 +31,4.169489619834902,3.0 +32,3.99848100338625,3.0 +33,2.1254024749839346,3.0 +34,2.3859037652105375,3.0 +35,1.5002988094022678,3.0 +36,2.8231583578817028,3.0 +37,3.7882136567418234,3.0 +38,1.869247934365222,3.0 +39,2.3495179765464287,3.0 +40,4.724375108797094,3.0 +41,3.353060868762474,3.0 +42,4.130298976365653,3.0 +43,4.506981319906336,3.0 +44,2.5481736130681667,3.0 +45,4.12395101642346,3.0 +46,3.0012455997864067,3.0 +47,3.431109015171298,3.0 +48,1.8239609513425572,3.0 +49,3.3932021955823077,3.0 +50,2.806448477772826,3.0 +51,2.8953891585554845,3.0 +52,1.2332454672970639,3.0 +53,3.154221350952736,3.0 +54,4.099139037453745,3.0 +55,3.905841394264469,3.0 +56,4.21716869997236,3.0 +57,2.5958682469587293,3.0 +58,2.3592303057688246,3.0 +59,2.838041033429507,3.0 +60,2.751262569159223,3.0 +61,4.339087898118313,3.0 +62,1.3712535280540008,3.0 +63,1.2252593586214986,3.0 +64,4.328313409993063,3.0 +65,3.260268749107191,3.0 +66,2.5669501835550568,3.0 +67,2.4765218620527314,3.0 +68,3.1245682980195193,3.0 +69,2.8770149487513654,3.0 +70,2.048464032353661,3.0 +71,2.866232655011438,3.0 +72,1.3926360456728444,3.0 +73,2.6028364804396147,3.0 +74,2.4669783464285246,3.0 +75,0.9993324682211582,3.0 +76,4.846604839540245,3.0 +77,2.6552252351977965,3.0 +78,2.596124400484242,3.0 +79,3.037445870873495,3.0 +80,4.204360025016286,3.0 +81,2.8584965975088714,3.0 +82,4.342576052182984,3.0 +83,1.753523627739775,3.0 +84,1.5424308656527983,3.0 +85,3.5402923384275944,3.0 +86,3.0825723033894206,3.0 +87,1.3188248767507147,3.0 +88,2.385007155918926,3.0 +89,1.9549293114214912,3.0 +90,2.6571366422903786,3.0 +91,3.0067736085099313,3.0 +92,2.3328743071161857,3.0 +93,2.616663080224252,3.0 +94,2.40119092795206,3.0 +95,4.0940160322249195,3.0 +96,2.3976331164814058,3.0 +97,2.2947966287473354,3.0 +98,3.2206794518730266,3.0 +99,2.4904975813038286,3.0 +100,2.3768565760305678,3.0 +101,4.1412846075516025,3.0 +102,2.570953656067571,3.0 +103,1.3415937538327092,3.0 +104,3.599215326608894,3.0 +105,2.1189006986170957,3.0 +106,1.9282539931387714,3.0 +107,2.864159249915642,3.0 +108,2.7325516061200914,3.0 +109,3.7858224744495113,3.0 +110,3.164007334708936,3.0 +111,2.1258215535024347,3.0 +112,3.5345824857793615,3.0 +113,3.570779681573453,3.0 +114,1.9226590312201375,3.0 +115,1.016562111260317,3.0 +116,3.7267149862751863,3.0 +117,2.8517485488385774,3.0 +118,2.2046508163930723,3.0 +119,2.7464838137568472,3.0 +120,2.5782393265726538,3.0 +121,1.6783460342752927,3.0 +122,2.6902464229478573,3.0 +123,2.380338824233214,3.0 +124,3.012634460132286,3.0 +125,2.594978797856564,3.0 +126,1.7801678506989287,3.0 +127,2.150961148739084,3.0 +0,4.606823519453638,6.0 +1,5.5989256671630745,6.0 +2,7.318675944192757,6.0 +3,7.6280645861002165,6.0 +4,6.319500409495257,6.0 +5,6.217611499330338,6.0 +6,6.160390870362295,6.0 +7,7.325625450510127,6.0 +8,5.825009693893169,6.0 +9,7.237579399777723,6.0 +10,3.8718061145570073,6.0 +11,6.960345747639168,6.0 +12,4.376219021440043,6.0 +13,5.30620568486396,6.0 +14,7.277272469371656,6.0 +15,6.462361849055432,6.0 +16,3.9572740929400734,6.0 +17,7.065528548536081,6.0 +18,7.352836700186313,6.0 +19,7.515580138244245,6.0 +20,6.4305332336336045,6.0 +21,5.391219837228267,6.0 +22,5.242826925085088,6.0 +23,5.826161204051401,6.0 +24,5.859937268209259,6.0 +25,8.215681120524525,6.0 +26,5.4634664157894095,6.0 +27,6.4454771703954075,6.0 +28,5.930916547697155,6.0 +29,7.820777015624318,6.0 +30,7.263678528160638,6.0 +31,8.12152263923181,6.0 +32,6.028154061563205,6.0 +33,6.13548777532245,6.0 +34,4.906560293080185,6.0 +35,5.318499990436772,6.0 +36,5.92585128813067,6.0 +37,6.9194086185857335,6.0 +38,3.835248161739062,6.0 +39,6.3766588309328665,6.0 +40,5.63787367704175,6.0 +41,7.346783913183216,6.0 +42,5.19440489438985,6.0 +43,4.225826467168622,6.0 +44,6.4258150009891395,6.0 +45,5.719255384712843,6.0 +46,6.564095397224136,6.0 +47,5.903318908552789,6.0 +48,6.01806657798671,6.0 +49,8.162519985820953,6.0 +50,6.688331543295205,6.0 +51,6.094135077078458,6.0 +52,4.335919539929565,6.0 +53,4.9059135154153655,6.0 +54,4.4908627164859425,6.0 +55,7.015935834817419,6.0 +56,5.3740221112876485,6.0 +57,5.704855544954757,6.0 +58,4.995824502014024,6.0 +59,4.208507654551982,6.0 +60,5.652290516786126,6.0 +61,6.635784588240233,6.0 +62,6.191777507016014,6.0 +63,5.321142139321102,6.0 +64,5.96672378122459,6.0 +65,8.251172286987414,6.0 +66,5.572585205120499,6.0 +67,5.5049597374118715,6.0 +68,4.803509731449258,6.0 +69,8.066785861870468,6.0 +70,4.903988773084038,6.0 +71,5.888739175461495,6.0 +72,4.607892079730539,6.0 +73,5.264649237382299,6.0 +74,6.108712055380668,6.0 +75,6.8660941773369455,6.0 +76,6.862086656236525,6.0 +77,5.96410113370345,6.0 +78,4.8251851301975766,6.0 +79,7.288846729066372,6.0 +80,7.151172037959492,6.0 +81,7.042742570066952,6.0 +82,6.789645444820112,6.0 +83,6.685898622848322,6.0 +84,5.775664887682934,6.0 +85,5.657201548885771,6.0 +86,5.218757436656485,6.0 +87,7.153842092330238,6.0 +88,5.50090655790487,6.0 +89,4.380357125981895,6.0 +90,7.253026421794335,6.0 +91,5.056046133299549,6.0 +92,5.998914458105865,6.0 +93,7.61112284848649,6.0 +94,5.89323395244031,6.0 +95,6.19679637877695,6.0 +96,5.516261988011989,6.0 +97,6.524307939929529,6.0 +98,4.057679859707036,6.0 +99,7.041785909829391,6.0 +100,6.764111234706647,6.0 +101,4.471671972207558,6.0 +102,4.21099804108949,6.0 +103,6.742549835890967,6.0 +104,6.182294291801984,6.0 +105,6.059983539406632,6.0 +106,9.516849125718995,6.0 +107,6.538134172664648,6.0 +108,7.008320689895642,6.0 +109,6.773896783236559,6.0 +110,4.747115580937852,6.0 +111,5.807474781947272,6.0 +112,4.524428511482488,6.0 +113,5.780442640816161,6.0 +114,5.198023926972153,6.0 +115,5.711942724000656,6.0 +116,6.405527218092158,6.0 +117,5.225807999985261,6.0 +118,7.559909905873487,6.0 +119,5.8112656906442455,6.0 +120,5.238250463606161,6.0 +121,5.681521210082015,6.0 +122,5.719491287175643,6.0 +123,6.455647362121313,6.0 +124,5.617406487354772,6.0 +125,4.339150852330887,6.0 +126,5.2159700586748095,6.0 +127,5.197645367264323,6.0 +0,10.074507194453178,9.0 +1,7.642834939828584,9.0 +2,8.959651852677272,9.0 +3,9.835158251781024,9.0 +4,7.2945805287963,9.0 +5,6.103062100276741,9.0 +6,9.768139878116468,9.0 +7,7.932081773567787,9.0 +8,9.655506945918441,9.0 +9,7.563290474624946,9.0 +10,9.012982928953328,9.0 +11,8.394398582435418,9.0 +12,10.239989638673086,9.0 +13,6.678729216634709,9.0 +14,10.892508257634368,9.0 +15,8.890250143855082,9.0 +16,9.279474890067297,9.0 +17,8.862958863630164,9.0 +18,10.099711714590136,9.0 +19,8.342778599221973,9.0 +20,9.632955626116704,9.0 +21,8.726747192997985,9.0 +22,7.866743169354847,9.0 +23,10.619656919502415,9.0 +24,9.469113082525121,9.0 +25,9.248747654158814,9.0 +26,6.502498305986986,9.0 +27,7.0828795790695,9.0 +28,9.163026754923571,9.0 +29,9.716372042644698,9.0 +30,9.09319297421143,9.0 +31,9.201948445745467,9.0 +32,8.00498963309328,9.0 +33,9.866083358660223,9.0 +34,7.440517791371054,9.0 +35,11.339077280588244,9.0 +36,9.855889202867097,9.0 +37,8.59643646203935,9.0 +38,8.985309232549124,9.0 +39,8.57296445473239,9.0 +40,8.62269514223579,9.0 +41,9.723856454400977,9.0 +42,8.960072394973052,9.0 +43,8.269447200838314,9.0 +44,10.592488422242745,9.0 +45,8.67694038122863,9.0 +46,10.78263831463321,9.0 +47,10.022149839328383,9.0 +48,8.460416611017221,9.0 +49,7.609869455095898,9.0 +50,7.58083191710645,9.0 +51,8.627948735151447,9.0 +52,8.099314504203678,9.0 +53,10.430508260000757,9.0 +54,8.90241945273863,9.0 +55,8.674947131722611,9.0 +56,8.270626227738848,9.0 +57,9.537168870408003,9.0 +58,10.278745091667655,9.0 +59,9.053466222286168,9.0 +60,9.15840279734312,9.0 +61,8.079042532553972,9.0 +62,8.388338684806753,9.0 +63,10.186836398881603,9.0 +64,8.723067015540465,9.0 +65,9.77013750519579,9.0 +66,9.029574000845665,9.0 +67,7.838510328913905,9.0 +68,7.6093472466985315,9.0 +69,8.95533804879982,9.0 +70,9.501003554253675,9.0 +71,10.21950441427473,9.0 +72,8.606456488717257,9.0 +73,8.34114277919858,9.0 +74,9.956230245721496,9.0 +75,10.745671380916031,9.0 +76,9.603252646475887,9.0 +77,7.40637795397906,9.0 +78,7.242154008979375,9.0 +79,10.228755202822365,9.0 +80,9.565831649823416,9.0 +81,8.655980329865757,9.0 +82,8.959257776580635,9.0 +83,10.357871186841578,9.0 +84,10.070420121063762,9.0 +85,9.818026166427849,9.0 +86,9.62052913054561,9.0 +87,7.672546779908393,9.0 +88,10.039376452210002,9.0 +89,8.116452134089174,9.0 +90,7.401718198709535,9.0 +91,9.400630644985931,9.0 +92,8.587826634796986,9.0 +93,9.421895244583938,9.0 +94,8.940202946618973,9.0 +95,9.029233202841228,9.0 +96,7.9296331459850675,9.0 +97,7.869659112262588,9.0 +98,9.002048250570477,9.0 +99,7.724892216479145,9.0 +100,10.257550444614596,9.0 +101,9.127328661421817,9.0 +102,8.131108654637583,9.0 +103,9.542262876538535,9.0 +104,8.428802031233461,9.0 +105,9.838799017809936,9.0 +106,8.58253330489674,9.0 +107,8.04945140126139,9.0 +108,9.838666202697212,9.0 +109,7.222210710864647,9.0 +110,9.020797988316389,9.0 +111,11.198755284208564,9.0 +112,9.902311943504731,9.0 +113,8.268455052341995,9.0 +114,9.196679340508988,9.0 +115,10.085221416887418,9.0 +116,8.789187643097703,9.0 +117,9.05252474696093,9.0 +118,10.207225802526317,9.0 +119,8.456518725841255,9.0 +120,10.706072071243309,9.0 +121,6.971235017869722,9.0 +122,6.87664578474583,9.0 +123,8.046183170871416,9.0 +124,8.010525164368774,9.0 +125,8.590253197994269,9.0 +126,9.089547459354861,9.0 +127,8.961471781668173,9.0